/* Unit tests for transition block covering buildCertificationTransitionBlock; isCertificationTransitionBlock. 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 transition suite's contract for test-file scaffold coverage. */ import { test, expect, describe } from "vitest"; import { buildCertificationTransitionBlock, isCertificationTransitionBlock, } from "../transition-block.ts"; describe("buildCertificationTransitionBlock", () => { test("returns incomplete status with CERT-TRANSITION-01 diagnostic", () => { const result = buildCertificationTransitionBlock("site.deploy"); expect(result.status).toBe("incomplete"); expect(result.command).toBe("site.deploy"); expect(result.requiredNode).toBe("CERT-007"); expect(result.exitCode).toBe(1); expect(result.diagnostics).toHaveLength(1); expect(result.diagnostics[0]!.ruleId).toBe("CERT-TRANSITION-01"); expect(result.diagnostics[0]!.severity).toBe("error"); }); test("includes fix hint in diagnostic", () => { const result = buildCertificationTransitionBlock("site.deploy"); expect(result.diagnostics[0]!.fixHint).toContain("CERT-007"); }); }); describe("isCertificationTransitionBlock", () => { test("returns true for a transition block result", () => { const result = buildCertificationTransitionBlock("site.deploy"); expect(isCertificationTransitionBlock(result)).toBe(true); }); test("returns false for null", () => { expect(isCertificationTransitionBlock(null)).toBe(false); }); test("returns false for plain object without required fields", () => { expect(isCertificationTransitionBlock({ status: "incomplete" })).toBe(false); }); test("returns false for object with wrong status", () => { expect( isCertificationTransitionBlock({ status: "pass", requiredNode: "CERT-007", diagnostics: [{ ruleId: "CERT-TRANSITION-01" }], }), ).toBe(false); }); test("returns false for object with wrong requiredNode", () => { expect( isCertificationTransitionBlock({ status: "incomplete", requiredNode: "OTHER", diagnostics: [{ ruleId: "CERT-TRANSITION-01" }], }), ).toBe(false); }); });