From 2b17de221279ef7e8277cd33390f89328530cef7 Mon Sep 17 00:00:00 2001 From: Codex Review Integration Date: Wed, 26 Aug 2026 19:47:57 -0300 Subject: [PATCH] fix(work-orders): confirm cleared vendor saves --- .../utils/work-order-feedback-toasts.ts | 8 +++--- .../utils/work-order-feedback-toasts.test.ts | 26 ++++++++++++++++--- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/domain/work-orders/utils/work-order-feedback-toasts.ts b/src/domain/work-orders/utils/work-order-feedback-toasts.ts index 95f202bc..b7c5f3ff 100644 --- a/src/domain/work-orders/utils/work-order-feedback-toasts.ts +++ b/src/domain/work-orders/utils/work-order-feedback-toasts.ts @@ -76,9 +76,7 @@ export function applyVendorTableSave( id: string | number, fields: VendorAssignmentFields, ) { - onPatch( - id, - toVendorTablePatch(fields), - isAssignedVendorId(fields.vendorId) ? { onSuccess: notifyVendorAssigned } : undefined, - ); + onPatch(id, toVendorTablePatch(fields), { + onSuccess: isAssignedVendorId(fields.vendorId) ? notifyVendorAssigned : notifyWorkOrderSaved, + }); } diff --git a/src/test/domain/work-orders/utils/work-order-feedback-toasts.test.ts b/src/test/domain/work-orders/utils/work-order-feedback-toasts.test.ts index ea1b7a5f..643a02dc 100644 --- a/src/test/domain/work-orders/utils/work-order-feedback-toasts.test.ts +++ b/src/test/domain/work-orders/utils/work-order-feedback-toasts.test.ts @@ -71,7 +71,7 @@ describe("work-order-feedback-toasts", () => { expect(toast.warning).not.toHaveBeenCalled(); }); - it("persists an empty vendor without an assigned toast", () => { + it("shows generic save success for an empty vendor after persistence", () => { const onPatch = vi.fn(); const fields = { vendorId: "", @@ -81,11 +81,20 @@ describe("work-order-feedback-toasts", () => { }; applyVendorTableSave(onPatch, 7, fields); - expect(onPatch).toHaveBeenCalledWith(7, toVendorTablePatch(fields), undefined); + expect(onPatch).toHaveBeenCalledWith( + 7, + toVendorTablePatch(fields), + expect.objectContaining({ onSuccess: expect.any(Function) }), + ); expect(toast.success).not.toHaveBeenCalled(); + + const { onSuccess } = onPatch.mock.calls[0][2] as { onSuccess: () => void }; + onSuccess(); + expect(toast.success).toHaveBeenCalledWith(workOrderSavedMessage()); + expect(toast.success).not.toHaveBeenCalledWith(vendorAssignedMessage()); }); - it("persists a whitespace vendorId without an assigned toast", () => { + it("shows generic save success for a whitespace vendor id after persistence", () => { const onPatch = vi.fn(); const fields = { vendorId: " ", @@ -95,8 +104,17 @@ describe("work-order-feedback-toasts", () => { }; applyVendorTableSave(onPatch, 7, fields); - expect(onPatch).toHaveBeenCalledWith(7, toVendorTablePatch(fields), undefined); + expect(onPatch).toHaveBeenCalledWith( + 7, + toVendorTablePatch(fields), + expect.objectContaining({ onSuccess: expect.any(Function) }), + ); expect(toast.success).not.toHaveBeenCalled(); + + const { onSuccess } = onPatch.mock.calls[0][2] as { onSuccess: () => void }; + onSuccess(); + expect(toast.success).toHaveBeenCalledWith(workOrderSavedMessage()); + expect(toast.success).not.toHaveBeenCalledWith(vendorAssignedMessage()); }); it("toasts vendor assignment when a slide-over patch includes a vendor id", () => {