/*
Unit tests for navigation covering defaultNavigationGroups; createNavigationGroupEnum; navigationTargetSchema. It also guards the documented public contract and regression-sensitive edge cases.
- Not a contract source of truth — the module under test owns the authoritative behavior; fixtures are minimal scaffolding only.
- RFC-1311: Compass header sweep — declares the navigation suite's contract for test-file scaffold coverage.
*/
import { describe, it, expect } from "vitest";
import {
createNavigationGroupEnum,
defaultNavigationGroups,
navigationTargetSchema,
navigationSchema,
} from "../navigation.ts";
describe("defaultNavigationGroups", () => {
it("contains expected groups", () => {
expect(defaultNavigationGroups).toEqual(["navigation", "legal", "contact"]);
});
});
describe("createNavigationGroupEnum", () => {
it("creates a Zod enum from group names", () => {
const enumSchema = createNavigationGroupEnum(["main", "footer"]);
expect(enumSchema.parse("main")).toBe("main");
expect(enumSchema.parse("footer")).toBe("footer");
});
it("rejects values not in the enum", () => {
const enumSchema = createNavigationGroupEnum(["main"]);
expect(() => enumSchema.parse("footer")).toThrow();
});
});
describe("navigationTargetSchema", () => {
it("validates a target with valid group", () => {
const groupEnum = createNavigationGroupEnum(["navigation", "legal"]);
const schema = navigationTargetSchema(groupEnum);
const result = schema.safeParse({
id: "home",
label: "Home",
semanticTarget: { kind: "internal", pageId: "home" },
group: "navigation",
});
expect(result.success).toBe(true);
});
});
describe("navigationSchema", () => {
it("validates a navigation object with targets", () => {
const groupEnum = createNavigationGroupEnum(["navigation"]);
const schema = navigationSchema(groupEnum);
const result = schema.safeParse({
targets: [
{
id: "home",
label: "Home",
semanticTarget: { kind: "internal", pageId: "home" },
group: "navigation",
},
],
});
expect(result.success).toBe(true);
});
});