This commit is contained in:
@@ -1,79 +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)
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user