import { describe, expect, it } from "vitest"; import { starterAcceptance, starterControlSectionInventory, starterProductReadiness, starterTransferMode, validateProductAcceptanceCoverage, validateToolcraftAcceptanceCoverage, } from "./starter-acceptance"; import { starterSchema } from "./starter-schema"; import { schemaHasProductSurface } from "./starter-acceptance.schema-test-utils"; describe("Toolcraft starter base acceptance coverage", () => { it("requires acceptance coverage for every visible schema control", () => { expect(validateProductAcceptanceCoverage()).toEqual([]); }); it("validates equivalent product data independently from object identity", () => { const clonedSchema = structuredClone(starterSchema); const clonedAcceptance = structuredClone(starterAcceptance); const clonedTransferMode = structuredClone(starterTransferMode); const clonedSectionInventory = structuredClone(starterControlSectionInventory); const clonedProductReadiness = structuredClone(starterProductReadiness); expect( validateToolcraftAcceptanceCoverage({ acceptance: clonedAcceptance, productReadiness: clonedProductReadiness, schema: clonedSchema, sectionInventory: clonedSectionInventory, transferMode: clonedTransferMode, }), ).toEqual(validateProductAcceptanceCoverage()); }); it("requires generated product apps to publish a control section inventory", () => { if (!schemaHasProductSurface()) { expect(starterControlSectionInventory).toEqual([]); return; } expect( starterControlSectionInventory.length, "Product apps must export starterControlSectionInventory so section grouping decisions are machine-checkable.", ).toBeGreaterThan(0); expect(validateProductAcceptanceCoverage()).toEqual([]); }); });