geo/frontend/__tests__/lib/platforms.test.ts

72 lines
2.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 平台映射统一测试
* 验证 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 和 yuanbaodashboard-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);
});
});