From ff391733f0e10aff0e64f688f5d1124b700d7974 Mon Sep 17 00:00:00 2001 From: Jeremy-Z Date: Tue, 7 Jul 2026 16:07:03 -0400 Subject: [PATCH] Updated unit tests to make sure new logic is being hit. --- .../duplicate-check/duplicate-check.spec.js | 88 ++++++++++++++++--- src/layouts/welcome-page/welcome-page.spec.js | 50 +++++++++++ 2 files changed, 125 insertions(+), 13 deletions(-) diff --git a/src/layouts/duplicate-check/duplicate-check.spec.js b/src/layouts/duplicate-check/duplicate-check.spec.js index ada47fc0..18908e19 100644 --- a/src/layouts/duplicate-check/duplicate-check.spec.js +++ b/src/layouts/duplicate-check/duplicate-check.spec.js @@ -13,6 +13,7 @@ import settleAllPromises from '@/helpers/layout-helper.js'; import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; import coverageStatuses from '@/constants/coverage-statuses'; import coverageType from '@/constants/coverage-type'; +import { saveSession } from '@/helpers/order-helper'; // Mock fetchCmsContentForPage jest.mock('@/helpers/cms-content-helper', () => ({ @@ -22,6 +23,9 @@ jest.mock('@/helpers/cms-content-helper', () => ({ // Mock our module for promises. jest.mock('@/helpers/layout-helper.js', () => jest.fn()); +jest.mock('@/helpers/order-helper', () => ({ + saveSession: jest.fn().mockResolvedValue({}) +})); function getMountedComponent(mainInitialState = {}, initialData = {}, methodToRunAfterInitializingStore = () => {}) { const mountOptions = getMountOptions({ @@ -278,6 +282,33 @@ describe('duplicateCheck.vue', () => { }); describe('forwardButtonAction', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + + test('No selected duplicate => calls saveSession and getCoveragePolicyInfo, not loadSessionFromDuplicate', async () => { + // Arrange + const { wrapper } = getMountedComponent({ + applicationUser: { + duplicateOrders: [ + { + referralNumber: getRandomString(6, 6), + correlationId: getRandomString(6, 6) + } + ] + } + }); + wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({}); + + // Act + await wrapper.vm.forwardButtonAction(); + + // Assert + expect(saveSession).toHaveBeenCalledTimes(1); + expect(wrapper.vm.mainStore.loadSessionFromDuplicate).not.toHaveBeenCalled(); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1); + }); + test('Selected duplicate => load session called', async () => { // Arrange const selectedAnswer = getRandomString(6, 6); @@ -296,17 +327,48 @@ describe('duplicateCheck.vue', () => { } }); - wrapper.setData({ selectedAnswer }); - useMainStore().loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.resolve({})); + await wrapper.setData({ selectedAnswer }); + wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({}); // Act await wrapper.vm.forwardButtonAction(); // Assert expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(1); + expect(saveSession).not.toHaveBeenCalled(); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1); expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1); }); - test('Selected new order => load session not called', async () => { + test('Selected NewClaim => calls saveSession, not loadSessionFromDuplicate', async () => { + // Arrange + const { wrapper } = getMountedComponent({ + applicationUser: { + duplicateOrders: [ + { + vehicleYear: 'YEAR', + vehicleMake: 'make', + vehicleModel: 'MoDel', + responseDate: '2018-03-01T01:12:34', + referralNumber: getRandomString(6, 6), + correlationId: getRandomString(6, 6) + } + ] + } + }); + + await wrapper.setData({ selectedAnswer: 'NewClaim' }); + wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({}); + + // Act + await wrapper.vm.forwardButtonAction(); + + // Assert + expect(saveSession).toHaveBeenCalledTimes(1); + expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(0); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1); + }); + test('Unmatched selection => does not call saveSession or loadSessionFromDuplicate', async () => { // Arrange const newOrderSelectionName = getRandomString(6, 6); const { wrapper } = getMountedComponent({ @@ -324,14 +386,16 @@ describe('duplicateCheck.vue', () => { } }); - wrapper.setData({ selectedAnswer: newOrderSelectionName }); - useMainStore().loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.resolve({})); + await wrapper.setData({ selectedAnswer: newOrderSelectionName }); + wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockResolvedValue({}); // Act await wrapper.vm.forwardButtonAction(); // Assert + expect(saveSession).toHaveBeenCalledTimes(0); expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(0); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1); expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1); }); test('Load session throws error => still navigate forward', async () => { @@ -352,20 +416,18 @@ describe('duplicateCheck.vue', () => { } }); - wrapper.setData({ selectedAnswer }); + await wrapper.setData({ selectedAnswer }); const error = 'load session error'; - useMainStore().loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.reject(error)); + wrapper.vm.mainStore.loadSessionFromDuplicate = jest.fn().mockImplementation(() => Promise.reject(error)); // Act + await wrapper.vm.forwardButtonAction(); // Assert - expect.assertions(2); - try { - await wrapper.vm.forwardButtonAction(); - } catch (e) { - expect(e).toMatch(error); - } expect(wrapper.vm.mainStore.loadSessionFromDuplicate).toHaveBeenCalledTimes(1); + expect(saveSession).not.toHaveBeenCalled(); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(0); + expect(wrapper.vm.$router.navigate).toHaveBeenCalledTimes(1); }); test('coverageType deductible and policy vehicles returned => CLICKED_FORWARD_POLICY_VERIFIED_WITH_VEHICLES', async () => { // Arrange diff --git a/src/layouts/welcome-page/welcome-page.spec.js b/src/layouts/welcome-page/welcome-page.spec.js index f18d486e..707c6ab2 100644 --- a/src/layouts/welcome-page/welcome-page.spec.js +++ b/src/layouts/welcome-page/welcome-page.spec.js @@ -12,6 +12,7 @@ import { useMainStore } from '@/store'; import navigationScenarios from '@/router/router-constants/navigation-scenarios'; import routerParams from '@/router/router-constants/router-params'; import coverageType from '@/constants/coverage-type'; +import { saveSession } from '@/helpers/order-helper'; // Mock our module for promises. jest.mock('@/helpers/layout-helper.js', () => jest.fn()); @@ -23,6 +24,9 @@ jest.mock('@/helpers/cms-content-helper', () => ({ jest.mock('@/global-methods', () => ({ callHttpClient: jest.fn() })); +jest.mock('@/helpers/order-helper', () => ({ + saveSession: jest.fn().mockResolvedValue({}) +})); /** @ignore */ function setupMocks({ @@ -133,6 +137,10 @@ describe('welcome-page.vue', () => { }); describe('navigation', () => { + beforeEach(() => { + jest.clearAllMocks(); + }); + describe('When zip code check fails', () => { test('Navigation should not happen', async () => { // Arrange @@ -255,6 +263,48 @@ describe('navigation', () => { { [routerParams.SKIP_SAVE_SESSION]: true } ); }); + test('if no duplicates, calls saveSession and getCoveragePolicyInfo', async () => { + // Arrange + const { wrapper } = setupMocks({}); + useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); + useMainStore().applicationUser.duplicateOrders = []; + useMainStore().order.loadedFromCookie = false; + useMainStore().order.visitedDuplicateCheckPage = false; + + wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({ + data: { + isValid: true + } + })); + + // Act + await wrapper.vm.forwardButtonAction(); + + // Assert + expect(saveSession).toHaveBeenCalledTimes(1); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalledTimes(1); + }); + test('if duplicates found, does not call saveSession or getCoveragePolicyInfo', async () => { + // Arrange + const { wrapper } = setupMocks({}); + useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); + useMainStore().applicationUser.duplicateOrders = [{ test: 'duplicate-order' }]; + useMainStore().order.loadedFromCookie = false; + useMainStore().order.visitedDuplicateCheckPage = false; + + wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({ + data: { + isValid: true + } + })); + + // Act + await wrapper.vm.forwardButtonAction(); + + // Assert + expect(saveSession).not.toHaveBeenCalled(); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).not.toHaveBeenCalled(); + }); test('if policy is found, but no vehicles and no duplicates, navigate to vehicle-selection page', async () => { // Arrange const { wrapper } = setupMocks({});