/* Unit tests for update stamp covering isValidStampDate; resolveAuthoredStamp; resolveCklStamp. 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 update suite's contract for test-file scaffold coverage. */ import { describe, expect, it } from "vitest"; import { isValidStampDate, resolveAuthoredStamp, resolveCklStamp, resolvePageUpdateStamp, } from "../update-stamp.ts"; describe("isValidStampDate", () => { it("accepts YYYY-MM-DD", () => { expect(isValidStampDate("2024-01-15")).toBe(true); }); it("rejects non-string", () => { expect(isValidStampDate(20240115)).toBe(false); }); it("rejects wrong format", () => { expect(isValidStampDate("2024/01/15")).toBe(false); expect(isValidStampDate("January 15, 2024")).toBe(false); }); }); describe("resolveAuthoredStamp", () => { it("uses output.sitemap.lastmod first", () => { const result = resolveAuthoredStamp({ output: { sitemap: { lastmod: "2024-06-01" } }, }); expect(result?.date).toBe("2024-06-01"); expect(result?.source).toBe("authored-system-output"); }); it("uses article.updatedAt when no sitemap lastmod", () => { const result = resolveAuthoredStamp({ article: { updatedAt: "2024-05-01" }, }); expect(result?.date).toBe("2024-05-01"); expect(result?.source).toBe("authored-page-frontmatter"); }); it("uses article.publishedAt when no updatedAt", () => { const result = resolveAuthoredStamp({ article: { publishedAt: "2024-01-01" }, }); expect(result?.date).toBe("2024-01-01"); }); it("returns undefined when no valid dates", () => { expect(resolveAuthoredStamp({})).toBeUndefined(); }); it("ignores invalid date formats", () => { expect(resolveAuthoredStamp({ article: { updatedAt: "not-a-date" } })).toBeUndefined(); }); }); describe("resolveCklStamp", () => { it("returns latest valid date", () => { const result = resolveCklStamp(["2024-01-01", "2024-06-15", "2024-03-01"], ["ledger"]); expect(result?.date).toBe("2024-06-15"); expect(result?.source).toBe("ckl-claim-ledger"); }); it("returns undefined when no valid dates", () => { expect(resolveCklStamp(["invalid"], ["ledger"])).toBeUndefined(); }); }); describe("resolvePageUpdateStamp", () => { it("prefers authored stamp over CKL", () => { const result = resolvePageUpdateStamp({ pageId: "p1", lang: "de", pageEntry: { output: { sitemap: { lastmod: "2024-06-01" } } }, cklLedgerDates: ["2024-01-01"], }); expect(result.stamp?.date).toBe("2024-06-01"); expect(result.stamp?.source).toBe("authored-system-output"); }); it("falls back to CKL when no authored stamp", () => { const result = resolvePageUpdateStamp({ pageId: "p1", lang: "de", pageEntry: {}, cklLedgerDates: ["2024-03-01"], cklInputs: ["ledger"], }); expect(result.stamp?.date).toBe("2024-03-01"); expect(result.stamp?.source).toBe("ckl-claim-ledger"); }); it("returns missingReason when no sources available", () => { const result = resolvePageUpdateStamp({ pageId: "p1", lang: "de", pageEntry: {}, }); expect(result.stamp).toBeUndefined(); expect(result.missingReason).toBe("no-content-source"); }); });