const { validateContractImportStatus } = require("../../../src/scripts/import-project-ledgers"); describe("contract ledger import status guard", () => { it("allows only non-terminal persisted statuses", () => { expect(validateContractImportStatus("draft")).toBeNull(); expect(validateContractImportStatus("active")).toBeNull(); expect(validateContractImportStatus("archived")).toBeNull(); expect(validateContractImportStatus("expired")).toBe("status_not_importable:expired"); expect(validateContractImportStatus("terminated")).toBe("status_not_importable:terminated"); }); it("does not overwrite an already terminated contract", () => { expect(validateContractImportStatus("active", "terminated")).toBe("terminated_contract_is_final"); expect(validateContractImportStatus("archived", "terminated")).toBe("terminated_contract_is_final"); }); it("does not perform an unaudited status transition for an existing row", () => { expect(validateContractImportStatus("archived", "active")).toBe("status_change_requires_contract_api"); expect(validateContractImportStatus("active", "active")).toBeNull(); }); it("does not overwrite ordinary fields on an archived row", () => { expect(validateContractImportStatus("archived", "archived")).toBe("archived_contract_requires_correction_api"); expect(validateContractImportStatus("active", "archived")).toBe("archived_contract_requires_correction_api"); }); });