diff --git a/apps/web/src/test/config/navigation.test.ts b/apps/web/src/test/config/navigation.test.ts index d4776b711..e3e9e1626 100644 --- a/apps/web/src/test/config/navigation.test.ts +++ b/apps/web/src/test/config/navigation.test.ts @@ -1,80 +1,79 @@ /** * navigation config 测试 */ -import { describe, it, expect } from "vitest" -import { NAV_ITEMS, NAV_GROUPS } from "@/config/navigation" +import { describe, it, expect } from "vitest"; +import { NAV_ITEMS, NAV_GROUPS } from "@/config/navigation"; describe("navigation config", () => { describe("NAV_ITEMS", () => { it("应该是一个非空数组", () => { - expect(Array.isArray(NAV_ITEMS)).toBe(true) - expect(NAV_ITEMS.length).toBeGreaterThan(0) - }) + expect(Array.isArray(NAV_ITEMS)).toBe(true); + expect(NAV_ITEMS.length).toBeGreaterThan(0); + }); it("每个导航项都有必需字段", () => { NAV_ITEMS.forEach((item) => { - expect(item).toHaveProperty("key") - expect(item).toHaveProperty("label") - expect(item).toHaveProperty("path") - expect(item).toHaveProperty("icon") - expect(typeof item.key).toBe("string") - expect(typeof item.label).toBe("string") - expect(typeof item.path).toBe("string") - expect(item.path).toMatch(/^\/app/) - }) - }) + expect(item).toHaveProperty("key"); + expect(item).toHaveProperty("label"); + expect(item).toHaveProperty("path"); + expect(item).toHaveProperty("icon"); + expect(typeof item.key).toBe("string"); + expect(typeof item.label).toBe("string"); + expect(typeof item.path).toBe("string"); + expect(item.path).toMatch(/^\/app/); + }); + }); it("key 不重复", () => { - const keys = NAV_ITEMS.map((item) => item.key) - expect(new Set(keys).size).toBe(keys.length) - }) + const keys = NAV_ITEMS.map((item) => item.key); + expect(new Set(keys).size).toBe(keys.length); + }); it("path 不重复", () => { - const paths = NAV_ITEMS.map((item) => item.path) - expect(new Set(paths).size).toBe(paths.length) - }) + const paths = NAV_ITEMS.map((item) => item.path); + expect(new Set(paths).size).toBe(paths.length); + }); it("包含核心导航项", () => { - const keys = NAV_ITEMS.map((item) => item.key) - expect(keys).toContain("dashboard") - expect(keys).toContain("assets") - expect(keys).toContain("voices") - expect(keys).toContain("titles") - }) - }) + const keys = NAV_ITEMS.map((item) => item.key); + expect(keys).toContain("dashboard"); + expect(keys).toContain("assets"); + expect(keys).toContain("voices"); + expect(keys).toContain("titles"); + }); + }); describe("NAV_GROUPS", () => { it("应该是一个非空数组", () => { - expect(Array.isArray(NAV_GROUPS)).toBe(true) - expect(NAV_GROUPS.length).toBeGreaterThan(0) - }) + expect(Array.isArray(NAV_GROUPS)).toBe(true); + expect(NAV_GROUPS.length).toBeGreaterThan(0); + }); it("每个分组都有 title 和 items", () => { NAV_GROUPS.forEach((group) => { - expect(group).toHaveProperty("title") - expect(group).toHaveProperty("items") - expect(typeof group.title).toBe("string") - expect(Array.isArray(group.items)).toBe(true) - expect(group.items.length).toBeGreaterThan(0) - }) - }) + expect(group).toHaveProperty("title"); + expect(group).toHaveProperty("items"); + expect(typeof group.title).toBe("string"); + expect(Array.isArray(group.items)).toBe(true); + expect(group.items.length).toBeGreaterThan(0); + }); + }); it("分组中的每个导航项结构正确", () => { NAV_GROUPS.forEach((group) => { group.items.forEach((item) => { - expect(item).toHaveProperty("key") - expect(item).toHaveProperty("label") - expect(item).toHaveProperty("path") - expect(item).toHaveProperty("icon") - expect(item.path).toMatch(/^\/app/) - }) - }) - }) + expect(item).toHaveProperty("key"); + expect(item).toHaveProperty("label"); + expect(item).toHaveProperty("path"); + expect(item).toHaveProperty("icon"); + expect(item.path).toMatch(/^\/app/); + }); + }); + }); it("分组标题不重复", () => { - const titles = NAV_GROUPS.map((g) => g.title) - expect(new Set(titles).size).toBe(titles.length) - }) - }) -}) - + const titles = NAV_GROUPS.map((g) => g.title); + expect(new Set(titles).size).toBe(titles.length); + }); + }); +});