From 6797b3fd718b1635043f0665b1a63e28bb284adf Mon Sep 17 00:00:00 2001 From: Minojhini Valaiyapathi Date: Mon, 3 Aug 2026 09:33:19 -0400 Subject: [PATCH] CASH-3105 - changing zip must re-run parts selection when recal ack modal should show --- src/layouts/scheduling/scheduling.spec.js | 31 +++++++++++++++++++++++ src/layouts/scheduling/scheduling.vue | 9 +++++++ 2 files changed, 40 insertions(+) diff --git a/src/layouts/scheduling/scheduling.spec.js b/src/layouts/scheduling/scheduling.spec.js index 105bf8fac..d6daabebb 100644 --- a/src/layouts/scheduling/scheduling.spec.js +++ b/src/layouts/scheduling/scheduling.spec.js @@ -85,6 +85,7 @@ function setupMocks({ isAppleBrowser = false } = {}) { CLICKED_FORWARD: "clickedForward", CLICKED_FORWARD_WITH_MOBILE_SERVICE: "clickedForwardWithMobileService", CLICKED_BACK: "clickedBack", + ZIP_CODE_CHANGED_RECAL_ACK: "ZIP_CODE_CHANGED_RECAL_ACK", }; }, pageName() { @@ -284,6 +285,36 @@ describe("scheduling.vue", () => { expect(wrapper.vm.$refs.schedulingZipSearch.focusZipInput).toHaveBeenCalled(); wrapper.unmount(); }); + + test("navigates to service-zip when zip changes and recal acknowledgement applies", async () => { + store.getters.order.lineItems = { + glassParts: [ + { + partType: "WINDSHIELD", + requiresRecalibration: true, + canSafeliteRecalibrate: false, + }, + ], + }; + try { + const { wrapper } = setupMocks(); + await wrapper.setData({ + isRecalAcknowledgedForScheduling: "", + isLoadingDates: false, + }); + + await wrapper.vm.onZipSearched({ zipCode: "44101", billToAccountNumber: "87291" }); + + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( + "ZIP_CODE_CHANGED_RECAL_ACK", + "scheduling" + ); + expect(wrapper.vm.isLoadingDates).toBe(false); + wrapper.unmount(); + } finally { + store.getters.order.lineItems = { glassParts: [] }; + } + }); }); describe("forwardButtonAction", () => { diff --git a/src/layouts/scheduling/scheduling.vue b/src/layouts/scheduling/scheduling.vue index 24706d075..ce27ed3b2 100644 --- a/src/layouts/scheduling/scheduling.vue +++ b/src/layouts/scheduling/scheduling.vue @@ -517,6 +517,15 @@ export default { this.$refs.schedulingZipSearch?.focusZipInput(); }, async onZipSearched({ zipCode, billToAccountNumber }) { + // When recal ack applies, changing zip must re-run parts selection via service-zip. + if (this.shouldShowRecalAckModal()) { + this.$router.navigateWithSaving( + this.navigationScenarios.ZIP_CODE_CHANGED_RECAL_ACK, + this.pageName + ); + return; + } + this.billToAccountNumber = billToAccountNumber; this.isLoadingDates = true; try {