You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
1.2 KiB
36 lines
1.2 KiB
import { describe, expect, it } from "vitest";
|
|
import { collectSceneDefinitions } from "../src/init/sceneDiscovery";
|
|
import { SceneType } from "../src/enums/SceneType";
|
|
|
|
class DummyScene {
|
|
name = "dummy";
|
|
type = SceneType.Normal;
|
|
stage = {};
|
|
}
|
|
|
|
describe("collectSceneDefinitions", () => {
|
|
it("collects every page_*.ts scene without manual whitelist", () => {
|
|
const modules = {
|
|
"./stages/page_init.ts": { default: DummyScene },
|
|
"./stages/_global/page_00_global.ts": { default: DummyScene },
|
|
"./stages/welcome/page_welcome.ts": { default: DummyScene },
|
|
};
|
|
|
|
const scenes = collectSceneDefinitions(modules);
|
|
expect(scenes.map((item) => item.name)).toEqual(["init", "00_global", "welcome"]);
|
|
});
|
|
|
|
it("skips files excluded by predicate", () => {
|
|
const modules = {
|
|
"./stages/page_init.ts": { default: DummyScene },
|
|
"./stages/_global/page_00_global.ts": { default: DummyScene },
|
|
"./stages/welcome/page_welcome.ts": { default: DummyScene },
|
|
};
|
|
|
|
const scenes = collectSceneDefinitions(modules, {
|
|
exclude: (name) => name.startsWith("00_"),
|
|
});
|
|
|
|
expect(scenes.map((item) => item.name)).toEqual(["init", "welcome"]);
|
|
});
|
|
});
|
|
|