Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/application/sidebar/DocsSidebar.test.tsx
T

58 lines
2.4 KiB
TypeScript

import { readFileSync } from "node:fs";
import { join } from "node:path";
import { DocsSidebar } from "./DocsSidebar";
import { SideBarItem } from "./SidebarItem";
describe("DocsSidebar", () => {
it("should return an array of SideBarItem objects", () => {
const docsSidebar: SideBarItem[] = DocsSidebar();
expect(Array.isArray(docsSidebar)).toBe(true);
docsSidebar.forEach((item) => {
expect(typeof item.title).toBe("string");
expect(typeof item.path).toBe("string");
if (item.items) {
expect(Array.isArray(item.items)).toBe(true);
item.items.forEach((subItem) => {
expect(typeof subItem.title).toBe("string");
expect(typeof subItem.path).toBe("string");
});
}
});
});
it("should return feature items with tab titles starting with capital letters", () => {
const docsSidebar: SideBarItem[] = DocsSidebar();
const pageBlockItem = docsSidebar[2];
const pageBlockTab = pageBlockItem.items?.find((item) => item.path === "/docs/features");
expect(pageBlockTab).toBeDefined();
expect(pageBlockTab?.title).toMatch(/^\w/);
expect(pageBlockTab?.title.charAt(0)).toMatch(/[A-Z]/);
});
it("does not expose removed marketing docs in the default navigation", () => {
const serialized = JSON.stringify(DocsSidebar());
expect(serialized).not.toContain(["/docs/page", "-blocks"].join(""));
expect(serialized).not.toContain("/docs/features/marketing");
expect(serialized).not.toContain("/docs/features/email-marketing");
expect(serialized).not.toContain("/docs/features/help-desk");
expect(serialized).not.toContain("/docs/features/knowledge-base");
expect(serialized).not.toContain("/docs/features/analytics");
expect(serialized).not.toContain("/docs/features/onboarding");
expect(serialized).not.toContain("/docs/learning-center/guides/branding/landing");
expect(serialized).not.toContain("🚀");
expect(serialized).not.toContain("🚧");
});
it("uses semantic docs sidebar translation keys", () => {
const source = readFileSync(join(process.cwd(), "apps/web/app/application/sidebar/DocsSidebar.ts"), "utf8");
expect(source).toContain("docs.sidebar.introduction");
expect(source).toContain("docs.sidebar.learningCenter");
expect(source).toContain("docs.sidebar.coreModels");
expect(source.match(/^\s*title:\s*"(?!")/gmu)).toBeNull();
expect(source).not.toContain("ui.autogenerated");
});
});