/** * 平台映射统一测试 * 验证 platforms.ts 作为唯一真实来源 */ import { describe, it, expect } from "vitest"; import { PLATFORM_MAP, PLATFORMS } from "@/lib/platforms"; describe("PLATFORM_MAP 统一平台映射", () => { const EXPECTED_PLATFORMS = [ "wenxin", "kimi", "tongyi", "baidu_ai", "yuanbao", "qingyan", "doubao", "tiangong", "xinghuo", ] as const; it("PLATFORM_MAP 应包含全部9个平台", () => { const keys = Object.keys(PLATFORM_MAP); expect(keys).toHaveLength(9); }); it("PLATFORM_MAP 应包含所有预期的平台键", () => { for (const platform of EXPECTED_PLATFORMS) { expect(PLATFORM_MAP).toHaveProperty(platform); } }); it("PLATFORM_MAP 必须包含 baidu_ai 和 yuanbao(dashboard-health.ts 的 PLATFORM_LABELS 缺失的)", () => { expect(PLATFORM_MAP).toHaveProperty("baidu_ai"); expect(PLATFORM_MAP).toHaveProperty("yuanbao"); expect(PLATFORM_MAP["baidu_ai"]).toBe("百度AI搜索"); expect(PLATFORM_MAP["yuanbao"]).toBe("腾讯元宝"); }); it("每个平台的 label 应为非空字符串", () => { for (const [key, label] of Object.entries(PLATFORM_MAP)) { expect(label).toBeTruthy(); expect(typeof label).toBe("string"); expect(label.length).toBeGreaterThan(0); } }); it("PLATFORMS 数组应与 PLATFORM_MAP 键一致", () => { const platformKeys = PLATFORMS.map((p) => p.key); const mapKeys = Object.keys(PLATFORM_MAP); expect(platformKeys.sort()).toEqual(mapKeys.sort()); }); it("PLATFORMS 数组中每个条目的 label 应与 PLATFORM_MAP 一致", () => { for (const platform of PLATFORMS) { expect(platform.label).toBe(PLATFORM_MAP[platform.key]); } }); }); describe("dashboard-health.ts 不再定义自己的 PLATFORM_LABELS", () => { it("dashboard-health.ts 不应导出 PLATFORM_LABELS", async () => { const dashboardHealthModule = await import("@/types/dashboard-health"); expect("PLATFORM_LABELS" in dashboardHealthModule).toBe(false); }); it("dashboard-health.ts 不应导出 PLATFORM_ICONS", async () => { const dashboardHealthModule = await import("@/types/dashboard-health"); expect("PLATFORM_ICONS" in dashboardHealthModule).toBe(false); }); });