/* Unit tests for RFC-0143 / RFC-0328 per-page output projection resolution. 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 output suite's contract for test-file scaffold coverage. */ import { test, expect } from "vitest"; import { resolvePageOutput } from "../output-projection.ts"; test("content defaults apply when no semanticType is given", () => { const result = resolvePageOutput(undefined, {}); expect(result.sitemap.category).toBe("content"); expect(result.sitemap.include).toBe(true); expect(result.sitemap.includeLastmod).toBe(true); expect(result.llms.depth).toBe("full"); expect(result.robots.index).toBe(true); expect(result.robots.follow).toBe(true); }); test("legal semanticType sets legal defaults", () => { const result = resolvePageOutput(undefined, { semanticType: "legal" }); expect(result.sitemap.category).toBe("legal"); expect(result.sitemap.include).toBe(true); expect(result.sitemap.includeLastmod).toBe(true); expect(result.llms.depth).toBe("exclude"); expect(result.robots.index).toBe(true); expect(result.robots.follow).toBe(true); }); test("legal defaults are overridable by explicit output", () => { const result = resolvePageOutput( { sitemap: { category: "content", include: false }, llms: "full", robots: { index: false, follow: false }, }, { semanticType: "legal" }, ); expect(result.sitemap.category).toBe("content"); expect(result.sitemap.include).toBe(false); expect(result.llms.depth).toBe("full"); expect(result.robots.index).toBe(false); expect(result.robots.follow).toBe(false); }); test("legal sitemap lastmod preserves explicit value", () => { const result = resolvePageOutput( { sitemap: { lastmod: "2026-05-14" } }, { semanticType: "legal" }, ); expect(result.sitemap.category).toBe("legal"); expect(result.sitemap.lastmod).toBe("2026-05-14"); expect(result.sitemap.includeLastmod).toBe(true); }); test("openSource keeps its own default and does not get legal defaults", () => { const result = resolvePageOutput(undefined, { semanticType: "openSource" }); expect(result.sitemap.category).toBe("content"); expect(result.llms.depth).toBe("index-only"); });