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

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"]);
});
});