diff --git a/src/test/domain/work-orders/mappers/work-order-board-patch-mapper.test.ts b/src/test/domain/work-orders/mappers/work-order-board-patch-mapper.test.ts index 3aae3dc6..25006242 100644 --- a/src/test/domain/work-orders/mappers/work-order-board-patch-mapper.test.ts +++ b/src/test/domain/work-orders/mappers/work-order-board-patch-mapper.test.ts @@ -70,6 +70,9 @@ describe("expandTablePatchToBoardFieldOps", () => { expect(expandTablePatchToBoardFieldOps({ severity: null })).toEqual([ { field: "severity", value: "" }, ]); + expect(expandTablePatchToBoardFieldOps({ apptTime: "" })).toEqual([ + { field: "apptTime", value: "" }, + ]); }); it("emits service notes modal ops in pm → extraServices → serviceNotes order", () => { diff --git a/src/test/domain/work-orders/use-cases/use-work-order-table-mutations.test.tsx b/src/test/domain/work-orders/use-cases/use-work-order-table-mutations.test.tsx index 68b694fe..eed8dbce 100644 --- a/src/test/domain/work-orders/use-cases/use-work-order-table-mutations.test.tsx +++ b/src/test/domain/work-orders/use-cases/use-work-order-table-mutations.test.tsx @@ -537,3 +537,63 @@ describe("useWorkOrderTableMutations patchField success callbacks", () => { await waitFor(() => expect(onSuccessFirst).toHaveBeenCalledTimes(1)); }); }); + +describe("useWorkOrderTableMutations apptTime clear", () => { + it("patches empty apptTime and keeps the appointment date on refetch", async () => { + const datedRow: WorkOrderTableRow = { + ...BASE_ROW, + scheduledOn: "2026-06-25", + apptStart: "09:00", + apptEnd: "11:00", + apptTime: "09:00 – 11:00", + vendorId: "7", + primaryDispatchId: 10, + dispatchRowVersion: "disp-v1", + }; + const clearedRow: WorkOrderTableRow = { + ...datedRow, + apptStart: "", + apptEnd: "", + apptTime: "", + rowVersion: "wo-v2", + }; + patchBoardField.mockReset(); + patchBoardField.mockResolvedValue(clearedRow); + + const onPatch = vi.fn(); + const { result } = renderHook( + () => + useWorkOrderTableMutations({ + onPatch, + clearPatch: () => undefined, + getRow: () => datedRow, + }), + { wrapper: makeWrapper() }, + ); + + act(() => { + result.current.patchField(42, { apptTime: "" }); + }); + + await waitFor(() => + expect(onPatch).toHaveBeenCalledWith( + 42, + expect.objectContaining({ + apptTime: "", + scheduledOn: "2026-06-25", + }), + ), + ); + + expect(patchBoardField).toHaveBeenCalledWith( + 42, + expect.objectContaining({ + field: "apptTime", + value: "", + workOrderVersion: "AAAAAAA=", + dispatchVersion: "disp-v1", + primaryDispatchId: 10, + }), + ); + }); +});