From 6481d9ce86aad243e52db79b3aa3514673a83131 Mon Sep 17 00:00:00 2001 From: "arthur.bassi" Date: Tue, 4 Aug 2026 15:09:19 -0300 Subject: [PATCH] test(work-orders): assert CompDoc Generate skips Yes when date patch fails --- ...mp-doc-dialog-completion-contract.test.tsx | 34 +++++++++++++++++-- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/src/test/app/(protected)/workorders/comp-doc-dialog-completion-contract.test.tsx b/src/test/app/(protected)/workorders/comp-doc-dialog-completion-contract.test.tsx index 66699c5a..c99e6d3a 100644 --- a/src/test/app/(protected)/workorders/comp-doc-dialog-completion-contract.test.tsx +++ b/src/test/app/(protected)/workorders/comp-doc-dialog-completion-contract.test.tsx @@ -120,14 +120,14 @@ describe("CompDocDialog Save Draft / Generate completion contract", () => { expect(onDateCompletedChange).toHaveBeenCalledWith("2026-07-15"); }); expect(onSave).toHaveBeenCalledWith(expect.any(Object), "No"); - expect(patches).toEqual([{ docStatus: "No" }, { completedDate: "2026-07-15" }]); + expect(patches).toEqual([{ completedDate: "2026-07-15" }, { docStatus: "No" }]); expect(patches.some((patch) => "scheduledOn" in patch)).toBe(false); expect(patches.some((patch) => patch.status === "Completed")).toBe(false); expect(row.scheduledOn).toBe(SCHEDULED_ON); expect(row.status).toBe("Scheduled"); }); - it("Generate emits completedDate and doc Yes without auto-setting lifecycle Completed", async () => { + it("Generate emits completedDate before doc Yes without auto-setting lifecycle Completed", async () => { const row = baseRow({ completedDate: "2026-07-01" }); const { patches } = renderDialog(row); @@ -141,10 +141,38 @@ describe("CompDocDialog Save Draft / Generate completion contract", () => { expect.objectContaining({ generatedAt: expect.any(String) }), "Yes", ); - expect(patches).toEqual([{ docStatus: "Yes" }, { completedDate: "2026-07-20" }]); + expect(patches).toEqual([{ completedDate: "2026-07-20" }, { docStatus: "Yes" }]); expect(patches.some((patch) => "scheduledOn" in patch)).toBe(false); expect(patches.some((patch) => patch.status === "Completed")).toBe(false); expect(row.scheduledOn).toBe(SCHEDULED_ON); expect(row.status).toBe("Scheduled"); }); + + it("Generate does not write docStatus Yes when completedDate persistence fails", async () => { + const row = baseRow({ completedDate: "2026-07-01" }); + const client = new QueryClient({ + defaultOptions: { queries: { retry: false }, mutations: { retry: false } }, + }); + onDateCompletedChange.mockRejectedValueOnce(new Error("conflict")); + + render( + + + , + ); + + changeDateCompleted("2026-07-20"); + fireEvent.click(screen.getByRole("button", { name: /^generate$/i })); + + await waitFor(() => { + expect(onDateCompletedChange).toHaveBeenCalledWith("2026-07-20"); + }); + expect(onSave).not.toHaveBeenCalled(); + }); });