feat(08-05-contract-detail-workspace): 完成合同详情与终止状态治理
这个提交包含在:
@@ -0,0 +1,26 @@
|
||||
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");
|
||||
});
|
||||
});
|
||||
在新工单中引用
屏蔽一个用户