import { describe, expect, it } from "vitest"; import { capabilityCount, getCapabilityMeta } from "../engine/registry"; import { PLATFORM_GROUPS, buildDomainPlatformMap, capabilityDomains } from "./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(); expect(capabilityCount()).toBeGreaterThan(700); expect(map.size).toBe(capabilityCount()); for (const id of map.keys()) { const meta = getCapabilityMeta(id); expect(meta, `能力 ${id} 无 meta`).toBeTruthy(); expect(meta!.platforms, `能力 ${id} 的 meta.platforms 未从分组表派生`).toEqual(["win32"]); } }); });