43 lines
2.0 KiB
TypeScript
43 lines
2.0 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
||
import { capabilityCount, capabilityIds, getCapabilityMeta } from "../../src/engine/registry";
|
||
import {
|
||
PLATFORM_GROUPS,
|
||
buildDomainPlatformMap,
|
||
capabilityDomains
|
||
} from "../../src/capabilities/register-all";
|
||
|
||
describe("PLATFORM_GROUPS 平台单一源(迁移指南五件小事 #1)", () => {
|
||
it("每个能力域都有平台行,不允许缺行", () => {
|
||
for (const domain of capabilityDomains) {
|
||
expect(PLATFORM_GROUPS[domain], `域 ${domain} 缺少 PLATFORM_GROUPS 行`).toBeDefined();
|
||
}
|
||
expect(Object.keys(PLATFORM_GROUPS).sort()).toEqual([...capabilityDomains].sort());
|
||
});
|
||
|
||
it("现阶段数据只允许 win32,darwin/linux 仅类型占位不填数据", () => {
|
||
for (const [domain, platforms] of Object.entries(PLATFORM_GROUPS)) {
|
||
expect(
|
||
platforms.every((p) => p === "win32"),
|
||
`域 ${domain} 填了 win32 以外的平台数据`
|
||
).toBe(true);
|
||
}
|
||
});
|
||
|
||
it("registerAll 后所有能力 meta.platforms 与分组表一致(运行时派生)", async () => {
|
||
// buildDomainPlatformMap 逐域加载(动态 import 有缓存,必须在 registerAll 语义内一次完成)
|
||
const map = await buildDomainPlatformMap();
|
||
const count = capabilityCount();
|
||
expect(count).toBeGreaterThan(700);
|
||
// 组合运行时其他测试文件的副作用导入可能已预载全部域,fresh 检测会得到空 map;
|
||
// 此时退化为对全量已注册能力的 meta 断言(不变量相同:平台默认值均来自单一源)
|
||
const ids = map.size > 0 ? map.keys() : capabilityIds();
|
||
if (map.size > 0) expect(map.size).toBe(count);
|
||
for (const id of ids) {
|
||
const meta = getCapabilityMeta(id);
|
||
// 预载场景下个别域(如 Trigger)经 index.ts 注册,本就不走平台默认值派生——退化分支跳过
|
||
if (!meta) continue;
|
||
expect(meta.platforms, `能力 ${id} 的 meta.platforms 未从分组表派生`).toEqual(["win32"]);
|
||
}
|
||
});
|
||
});
|