文件
hyb-oa/server/tests/unit/scripts/import-project-ledgers.test.js

27 行
1.4 KiB
JavaScript

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");
});
});