Files
plainleaf/client/boot_config.test.ts
T
2026-03-13 09:24:52 +01:00

66 lines
1.4 KiB
TypeScript

import { expect, test } from "vitest";
import { extractSpaceLuaFromPageText, loadConfig } from "./boot_config.ts";
test("Test boot config", () => {
// One block present
expect(
extractSpaceLuaFromPageText("Hello\n\n```space-lua\ntest()\n```\nMore"),
).toEqual("test()");
// Two blocks present
expect(
extractSpaceLuaFromPageText(
"Hello\n\n```space-lua\ntest()\n```\nMore\n\n```space-lua\ntest2()\n```",
),
).toEqual("test()\ntest2()");
// No lua present
expect(
extractSpaceLuaFromPageText("Hello\n\n```lua\ntest()\n```\nMore"),
).toEqual("");
});
test("Test CONFIG lua eval", async () => {
// Test base case: no config code
let config = await loadConfig("", {}, false);
expect(config.values).toEqual({});
// Check a few config sets
config = await loadConfig(
`
config.set {
option1 = "pete"
}
config.set("optionObj.nested", 5)
`,
{},
false,
);
expect(config.values).toEqual({
option1: "pete",
optionObj: {
nested: 5,
},
});
// Check random Lua code crap resilience
config = await loadConfig(
`
config.set {
option1 = "pete"
}
slashCommand.define {}
local shouldSet = true
if shouldSet then
config.set("optionObj.nested", 5)
end
`,
{},
false,
);
expect(config.values).toEqual({
option1: "pete",
optionObj: {
nested: 5,
},
});
});