diff --git a/src/test/domain/work-orders/mappers/work-order-table-row-mapper.test.ts b/src/test/domain/work-orders/mappers/work-order-table-row-mapper.test.ts index 970eeff7..74bdc2bb 100644 --- a/src/test/domain/work-orders/mappers/work-order-table-row-mapper.test.ts +++ b/src/test/domain/work-orders/mappers/work-order-table-row-mapper.test.ts @@ -84,4 +84,18 @@ describe("mapWorkOrderTableRow primaryDispatchStatus", () => { expect(row.company).toBe(""); expect(row.primaryDispatchStatus).toBe("Sent"); }); + + it("maps vendor PATCH replacement dispatch as Pending with a new primaryDispatchId", () => { + const row = mapWorkOrderTableRow({ + id: 1, + VendorId: 5, + VendorName: "New Co", + PrimaryDispatchStatus: "Pending", + PrimaryDispatchId: 11, + }); + expect(row.vendorId).toBe("5"); + expect(row.company).toBe("New Co"); + expect(row.primaryDispatchStatus).toBe("Pending"); + expect(row.primaryDispatchId).toBe(11); + }); }); 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 6b2b3a64..1f629b09 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 @@ -21,6 +21,7 @@ vi.mock("@/domain/work-orders/api/work-orders-api", () => ({ vi.mock("react-toastify", () => ({ toast: { error: vi.fn() } })); +import { mapWorkOrderTableRow } from "@/domain/work-orders/mappers/work-order-table-row-mapper"; import { applySchedulePatch, useWorkOrderTableMutations, @@ -374,13 +375,21 @@ describe("useWorkOrderTableMutations vendor assignment round-trip", () => { }); it("keeps Company off the gap list when vendor PATCH returns a Pending assignment", async () => { - const returnedRow: WorkOrderTableRow = { - ...rowState, - vendorId: "9", - company: "New Co", - primaryDispatchStatus: "Pending", - primaryDispatchId: 11, - }; + const returnedRow = mapWorkOrderTableRow({ + id: 42, + VendorId: 9, + VendorName: "New Co", + PrimaryDispatchStatus: "Pending", + PrimaryDispatchId: 11, + DispatcherId: "d1", + DispatcherName: "Dispatcher", + CompletedDate: "2026-07-15", + InternalWONumber: "20260623001", + PM: "HVAC", + DocStatus: "Yes", + MediaCount: 1, + WorkOrderType: "PM", + }); patchBoardField.mockResolvedValue(returnedRow); const onPatch = vi.fn(); @@ -409,26 +418,37 @@ describe("useWorkOrderTableMutations vendor assignment round-trip", () => { await waitFor(() => expect(onPatch).toHaveBeenCalledWith( 42, - expect.objectContaining({ primaryDispatchStatus: "Pending" }), + expect.objectContaining({ + primaryDispatchStatus: "Pending", + primaryDispatchId: 11, + vendorId: "9", + }), ), ); expect(patchBoardField).toHaveBeenCalledWith( 42, - expect.objectContaining({ field: "vendorId", value: "9" }), + expect.objectContaining({ + field: "vendorId", + value: "9", + dispatchVersion: "disp-v1", + primaryDispatchId: 10, + }), ); const payload = patchBoardField.mock.calls[0]?.[1] as Record; expect(payload).not.toHaveProperty("primaryDispatchStatus"); + expect(returnedRow.primaryDispatchId).not.toBe(10); expect(getClosabilityGaps(tableRowToClosabilityInput(returnedRow))).not.toContain("Company"); }); it("keeps a Company gap when vendor PATCH still returns Refused", async () => { - const returnedRow: WorkOrderTableRow = { - ...rowState, - vendorId: "9", - company: "New Co", - primaryDispatchStatus: "Refused", - }; + const returnedRow = mapWorkOrderTableRow({ + id: 42, + VendorId: 9, + VendorName: "New Co", + PrimaryDispatchStatus: "Refused", + PrimaryDispatchId: 10, + }); patchBoardField.mockResolvedValue(returnedRow); const onPatch = vi.fn();