From 97a26159d3e219e4c34179082997074c8e8c5f9d Mon Sep 17 00:00:00 2001 From: Josh Dassinger Date: Fri, 24 May 2024 08:23:14 -0500 Subject: [PATCH] SSR-1167 Only call getFinalDeductible for ITAC / Deductible cases. Updated failing unit tests --- .../coverage-statement.spec.js | 18 ++- .../coverage-statement/coverage-statement.vue | 7 +- src/layouts/welcome-page/welcome-page.spec.js | 86 ++------------ src/store/index.js | 2 +- src/store/store.spec.js | 112 +++++++++++++++++- 5 files changed, 128 insertions(+), 97 deletions(-) diff --git a/src/layouts/coverage-statement/coverage-statement.spec.js b/src/layouts/coverage-statement/coverage-statement.spec.js index 4b3f16ae..82c85297 100644 --- a/src/layouts/coverage-statement/coverage-statement.spec.js +++ b/src/layouts/coverage-statement/coverage-statement.spec.js @@ -391,23 +391,20 @@ describe('coverageStatement.vue', () => { }); }); describe.each([ - [false, false, false, true, true, 0], - [false, true, true, true, true, 0], - [false, true, false, false, true, 0], - [false, true, false, true, false, 0], - [false, true, false, true, true, -1], - [false, true, false, true, true, null], - [true, true, false, true, true, 0] + [false, false, true, true, 0], + [false, true, false, true, 0], + [false, true, true, false, 0], + [false, true, true, true, -1], + [false, true, true, true, null], + [true, true, true, true, 0] ])('shouldRegisterClaim', ( expected, isClaimRegistrationRequired, - isClaimAlreadyRegistered, isPolicyLookupSuccessful, isPendingClaimRegistration, policyVehicleId ) => { test(`returns ${expected} when isClaimRegistrationRequired is ${isClaimRegistrationRequired} ` - + `and isClaimAlreadyRegistered is ${isClaimAlreadyRegistered} ` + `and isPolicyLookupSuccessful is ${isPolicyLookupSuccessful} ` + `and isPendingClaimRegistration is ${isPendingClaimRegistration} ` + `and policyVehicleId is ${(policyVehicleId == null ? 'NULL' : policyVehicleId)}`, () => { @@ -416,8 +413,7 @@ describe('coverageStatement.vue', () => { order: { insuranceCoverage: { coverageStatus: isPendingClaimRegistration ? coverageStatuses.PENDING : coverageStatuses.VERIFIED, - coverageType: isPolicyLookupSuccessful ? coverageType.Deductible : coverageType.NONE, - claimNumber: isClaimAlreadyRegistered ? getRandomString(6, 6) : null + coverageType: isPolicyLookupSuccessful ? coverageType.Deductible : coverageType.NONE }, vehicle: { policyVehicleId diff --git a/src/layouts/coverage-statement/coverage-statement.vue b/src/layouts/coverage-statement/coverage-statement.vue index aa0d38d5..1fe9b4cb 100644 --- a/src/layouts/coverage-statement/coverage-statement.vue +++ b/src/layouts/coverage-statement/coverage-statement.vue @@ -173,9 +173,12 @@ export default { let hasBailedOut = false; let pricingResults = []; - const { vehicle, isPolicyLookupSuccessful } = useMainStore(); + const { vehicle, isPolicyLookupSuccessful, isITAC, isDeductible } = useMainStore(); if (isPolicyLookupSuccessful && vehicle.policyVehicleId >= 0) { - await useMainStore().getFinalDeductible(); + if (isITAC || isDeductible) { + await useMainStore().getFinalDeductible(); + } + pricingResults = await useMainStore() .getPriceOrderItems(availableLineItems) .catch((err) => { diff --git a/src/layouts/welcome-page/welcome-page.spec.js b/src/layouts/welcome-page/welcome-page.spec.js index 5a105182..b36edb9f 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 globalMethods from '@/global-methods'; // Mock our module for promises. jest.mock('@/helpers/layout-helper.js', () => jest.fn()); @@ -20,6 +21,9 @@ jest.mock('@/helpers/layout-helper.js', () => jest.fn()); jest.mock('@/helpers/cms-content-helper', () => ({ fetchCmsContentForPage: jest.fn() })); +jest.mock('@/global-methods', () => ({ + callHttpClient: jest.fn() +})); /** @ignore */ function setupMocks({ @@ -168,13 +172,9 @@ describe('navigation', () => { test('Navigation should not happen', async () => { // Arrange const { wrapper } = setupMocks({}); - useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); - useMainStore().applicationUser.duplicateOrders = [{ test: 'a' }]; - wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({ - data: { - isValid: false - } - })); + wrapper.vm.mainStore.getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); + wrapper.vm.mainStore.applicationUser.duplicateOrders = [{ test: 'a' }]; + wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.reject()); // Act await wrapper.vm.forwardButtonAction(); @@ -209,78 +209,6 @@ describe('navigation', () => { { [routerParams.SAVE_SESSION_SYNCHRONOUS]: true } ); }); - test('if isCoverageEnabled is false, then getCoveragePolicyInfo not called', async () => { - // Arrange - const { wrapper } = getMountedComponent({}); - useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); - useMainStore().issConfig.isCoverageEnabled = false; - wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({ - data: { - isValid: true - } - })); - - // Act - await wrapper.vm.forwardButtonAction(); - - // Assert - expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); - expect(wrapper.vm.mainStore.getCoveragePolicyInfo).not.toHaveBeenCalled(); - }); - test('if isCoverageEnabled is true, then getCoveragePolicyInfo called', async () => { - // Arrange - const { wrapper } = getMountedComponent({}); - useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); - useMainStore().issConfig.isCoverageEnabled = true; - wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({ - data: { - isValid: true - } - })); - - // Act - await wrapper.vm.forwardButtonAction(); - - // Assert - expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); - expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalled(); - }); - test('if maxCoverageLookupAttemptsReached is true, then getCoveragePolicyInfo not called', async () => { - // Arrange - const { wrapper } = getMountedComponent({}); - useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); - useMainStore().applicationUser.coverageLookupAttempts = 11; - wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({ - data: { - isValid: true - } - })); - - // Act - await wrapper.vm.forwardButtonAction(); - - // Assert - expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); - expect(wrapper.vm.mainStore.getCoveragePolicyInfo).not.toHaveBeenCalled(); - }); - test('if maxCoverageLookupAttemptsReached is false, then getCoveragePolicyInfo called', async () => { - // Arrange - const { wrapper } = getMountedComponent({}); - useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); - useMainStore().applicationUser.coverageLookupAttempts = 10; - wrapper.vm.mainStore.validateZip = jest.fn().mockImplementation(() => Promise.resolve({ - data: { - isValid: true - } - })); - - // Act - await wrapper.vm.forwardButtonAction(); - - // Assert - expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); - expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalled(); - }); test('if policy and vehicles are found but no duplicates, navigate to policy-vehicle page', async () => { // Arrange const { wrapper } = setupMocks({}); diff --git a/src/store/index.js b/src/store/index.js index 757f3c07..6a4eb37b 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -527,7 +527,7 @@ export const useMainStore = defineStore({ const { order, issConfig, applicationUser } = this; const { policy } = order; - if (issConfig.isCoverageEnabled && applicationUser.coverageLookupAttempts > 10) { + if (!issConfig.isCoverageEnabled || applicationUser.coverageLookupAttempts > 10) { this.updateCoverageType(coverageType.NONE); return Promise.resolve(); } diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 83c2f712..ed870bf0 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -1228,6 +1228,8 @@ describe('Store', () => { describe('successful method call', () => { it('calls getCoveragePolicyInfo api endpoint', async () => { // Arrange + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act @@ -1239,16 +1241,55 @@ describe('Store', () => { endpoint: endpoints.CoveragePolicyInfo.url })); }); - it('Returns expected response object', async () => { + it('Sets policy fields for successful policy lookup', async () => { // Arrange - const response = { ReferralNumber: getRandomString(6, 6) }; + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; + + const address = getRandomString(6, 6); + const city = getRandomString(6, 6); + const state = getRandomString(6, 6); + const zipCode = getRandomString(6, 6); + const firstName = getRandomString(6, 6); + const lastName = getRandomString(6, 6); + + const vehicle = { id: '123' }; + + const response = { + data: { + policies: [ + { + insureds: [ + { + address, + city, + state, + zipCode, + firstName, + lastName + } + ], + vehicles: [ + vehicle + ] + } + ] + } + }; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(response)); // Act - const result = store.getCoveragePolicyInfo(); + await store.getCoveragePolicyInfo(); // Asserts - await expect(result).resolves.toBe(response); + await expect(store.order.customer.address.streetAddress).toBe(address); + await expect(store.order.customer.address.city).toBe(city); + await expect(store.order.customer.address.state).toBe(state); + await expect(store.order.customer.address.zipCode).toBe(zipCode); + await expect(store.order.customer.firstName).toBe(firstName); + await expect(store.order.customer.lastName).toBe(lastName); + await expect(store.order.serviceLocation.zipCode).toBe(zipCode); + await expect(store.order.policy.vehicles).toStrictEqual([vehicle]) }); it('calls api with expected data', async () => { // Arrange @@ -1262,6 +1303,8 @@ describe('Store', () => { store.order.policy.dateOfLoss = dateOfLoss; store.order.policy.policyZipCode = zipCode; store.order.referralCorrelationId = referralCorrelationId; + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve({})); // Act @@ -1280,6 +1323,8 @@ describe('Store', () => { }); it('null response by api => insuranceCoverage.coverageType is NONE', async () => { // Arrange + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(null)); // Act @@ -1290,6 +1335,8 @@ describe('Store', () => { }); it('no policies returned by api => insuranceCoverage.coverageType is NONE', async () => { // Arrange + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; const responseNoPolicies = { data: { policies: [] @@ -1326,6 +1373,8 @@ describe('Store', () => { policies: [policy1, {}] } }; + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseNoPolicies)); // Act @@ -1361,6 +1410,8 @@ describe('Store', () => { }] } }; + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseNoPolicies)); // Act @@ -1377,6 +1428,8 @@ describe('Store', () => { policies: [{ vehicles: [] }] } }; + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve(responseNoPolicies)); // Act @@ -1387,9 +1440,57 @@ describe('Store', () => { expect(store.order.policy.vehicles).toEqual([]); }); }); + + test('if isCoverageEnabled is false, then getCoveragePolicyInfo not called', async () => { + // Arrange + store.issConfig.isCoverageEnabled = false; + store.applicationUser.coverageLookupAttempts = 0; + + // Act + await store.getCoveragePolicyInfo(); + + // Assert + expect(globalMethods.callHttpClient).not.toHaveBeenCalled(); + }); + test('if isCoverageEnabled is true, then getCoveragePolicyInfo called', async () => { + // Arrange + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; + + // Act + await store.getCoveragePolicyInfo(); + + // Assert + expect(globalMethods.callHttpClient).toHaveBeenCalled(); + }); + test('if maxCoverageLookupAttemptsReached is true, then getCoveragePolicyInfo not called', async () => { + // Arrange + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 11; + + // Act + await store.getCoveragePolicyInfo(); + + // Assert + expect(globalMethods.callHttpClient).not.toHaveBeenCalled(); + }); + test('if maxCoverageLookupAttemptsReached is false, then getCoveragePolicyInfo called', async () => { + // Arrange + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 10; + globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.resolve()); + + // Act + await store.getCoveragePolicyInfo(); + + // Assert + expect(globalMethods.callHttpClient).toHaveBeenCalled(); + }); it('api call throws exception => insuranceCoverage.coverageType is NONE', async () => { expect.assertions(3); const error = 'get coverage policy info error'; + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.reject(error)); // Act @@ -1938,6 +2039,9 @@ describe('Store', () => { it('api call throws exception => coverageType none', async () => { expect.assertions(3); const error = 'get coverage policy info error'; + + store.issConfig.isCoverageEnabled = true; + store.applicationUser.coverageLookupAttempts = 0; globalMethods.callHttpClient = jest.fn().mockReturnValue(Promise.reject(error)); // Act