From ac2f3f3c4bd11680c8ab9f4c49a3571f9b7e883a Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 9 Jan 2024 15:58:01 -0500 Subject: [PATCH 1/8] restrict coverage lookup WIP --- src/layouts/entry-page/entry-page.vue | 2 ++ src/layouts/welcome-page/welcome-page.vue | 7 ++++++- src/store/index.js | 5 ++++- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index c53c9125..a4d4a138 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -89,6 +89,8 @@ export default { this.unauthorized = !authorized; if (authorized) { + this.mainStore.applicationUser.coverageAttempts = 0; + console.log(this.mainStore.applicationUser.coverageAttempts); // Forced full location redirect here. We do not want the entry page as part of the router/flow/path history. window.location = `/?issPage=${issPageValues.WELCOME_PAGE}`; } diff --git a/src/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue index c64371b5..56e3f752 100644 --- a/src/layouts/welcome-page/welcome-page.vue +++ b/src/layouts/welcome-page/welcome-page.vue @@ -308,6 +308,9 @@ export default { }, isCoverageEnabled() { return this.mainStore.issConfig.isCoverageEnabled; + }, + isCoverageLookupRestricted() { + return this.mainStore.applicationUser.coverageAttempts >= 11; } }, methods: { @@ -316,8 +319,10 @@ export default { await this.mainStore.getDuplicateReferrals() .then(() => {}, () => {}) .finally(async () => { - if (this.isCoverageEnabled) { + if (this.isCoverageEnabled && !this.isCoverageLookupRestricted) { await this.mainStore.getCoveragePolicyInfo()?.then(() => {}, () => {}); + } else { + this.mainStore.order.policy.policyLookupSuccessful = false; } this.navigateForward(); }); diff --git a/src/store/index.js b/src/store/index.js index 803fb30f..294bcc6d 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -183,7 +183,8 @@ const getDefaultState = () => ({ lastPageVisited: null, triggeredSiteEntry: false, // TODO not in save session duplicateOrders: [], - hasSentSaveQuoteEmail: null + hasSentSaveQuoteEmail: null, + coverageAttempts: 0 }, issConfig: { clientName: 'Generic Insurance', // this is the default and will be overriden by the client's name @@ -437,6 +438,8 @@ export const useMainStore = defineStore({ getCoveragePolicyInfo() { const { order } = this; const { policy } = order; + this.applicationUser.coverageAttempts += 1; + console.log(this.applicationUser.coverageAttempts); return new Promise((resolve, reject) => { globalMethods.callHttpClient({ method: endpoints.CoveragePolicyInfo.method, From f43ac712ffbbfe6d398e33ee948429ec9fb5039a Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 10 Jan 2024 14:54:51 -0500 Subject: [PATCH 2/8] small tweaks --- src/layouts/welcome-page/welcome-page.vue | 2 +- src/store/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue index 56e3f752..366819d3 100644 --- a/src/layouts/welcome-page/welcome-page.vue +++ b/src/layouts/welcome-page/welcome-page.vue @@ -310,7 +310,7 @@ export default { return this.mainStore.issConfig.isCoverageEnabled; }, isCoverageLookupRestricted() { - return this.mainStore.applicationUser.coverageAttempts >= 11; + return this.mainStore.applicationUser.coverageAttempts >= 10; } }, methods: { diff --git a/src/store/index.js b/src/store/index.js index 294bcc6d..54cedbcf 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -439,7 +439,7 @@ export const useMainStore = defineStore({ const { order } = this; const { policy } = order; this.applicationUser.coverageAttempts += 1; - console.log(this.applicationUser.coverageAttempts); + console.log(`Coverage attempt #${this.applicationUser.coverageAttempts}. Max attempts allowed: 10.`); return new Promise((resolve, reject) => { globalMethods.callHttpClient({ method: endpoints.CoveragePolicyInfo.method, From 6cbb1f7201205bbd85146236d6d73e440f7c059b Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 10 Jan 2024 15:29:23 -0500 Subject: [PATCH 3/8] update and unit tests --- src/layouts/welcome-page/welcome-page.spec.js | 26 +++++++++++++++++++ src/layouts/welcome-page/welcome-page.vue | 6 ++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/layouts/welcome-page/welcome-page.spec.js b/src/layouts/welcome-page/welcome-page.spec.js index 70447e84..fafea6a0 100644 --- a/src/layouts/welcome-page/welcome-page.spec.js +++ b/src/layouts/welcome-page/welcome-page.spec.js @@ -219,6 +219,32 @@ describe('navigation', () => { expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalled(); }); + test('if isCoverageLookupEnabled is false, then getCoveragePolicyInfo not called', async () => { + // Arrange + const { wrapper } = getMountedComponent({}); + useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); + useMainStore().applicationUser.coverageAttempts = 11; + + // Act + await wrapper.vm.forwardButtonAction(); + + // Assert + expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); + expect(wrapper.vm.mainStore.getCoveragePolicyInfo).not.toHaveBeenCalled(); + }); + test('if isCoverageLookupEnabled is true, then getCoveragePolicyInfo called', async () => { + // Arrange + const { wrapper } = getMountedComponent({}); + useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); + useMainStore().applicationUser.coverageAttempts = 10; + + // 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/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue index 366819d3..173a0692 100644 --- a/src/layouts/welcome-page/welcome-page.vue +++ b/src/layouts/welcome-page/welcome-page.vue @@ -309,8 +309,8 @@ export default { isCoverageEnabled() { return this.mainStore.issConfig.isCoverageEnabled; }, - isCoverageLookupRestricted() { - return this.mainStore.applicationUser.coverageAttempts >= 10; + isCoverageLookupEnabled() { + return this.mainStore.applicationUser.coverageAttempts <= 10; } }, methods: { @@ -319,7 +319,7 @@ export default { await this.mainStore.getDuplicateReferrals() .then(() => {}, () => {}) .finally(async () => { - if (this.isCoverageEnabled && !this.isCoverageLookupRestricted) { + if (this.isCoverageEnabled && this.isCoverageLookupEnabled) { await this.mainStore.getCoveragePolicyInfo()?.then(() => {}, () => {}); } else { this.mainStore.order.policy.policyLookupSuccessful = false; From a10e12a07bbe439a60157bfb526e969de3976a71 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 11 Jan 2024 09:17:13 -0500 Subject: [PATCH 4/8] remove console log --- src/layouts/entry-page/entry-page.vue | 1 - 1 file changed, 1 deletion(-) diff --git a/src/layouts/entry-page/entry-page.vue b/src/layouts/entry-page/entry-page.vue index a4d4a138..b627bc37 100644 --- a/src/layouts/entry-page/entry-page.vue +++ b/src/layouts/entry-page/entry-page.vue @@ -90,7 +90,6 @@ export default { if (authorized) { this.mainStore.applicationUser.coverageAttempts = 0; - console.log(this.mainStore.applicationUser.coverageAttempts); // Forced full location redirect here. We do not want the entry page as part of the router/flow/path history. window.location = `/?issPage=${issPageValues.WELCOME_PAGE}`; } From 6733fbb85ba88498bb8a5b1acd7653dcb754dcb2 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 11 Jan 2024 11:55:11 -0500 Subject: [PATCH 5/8] PR revisions --- src/layouts/welcome-page/welcome-page.vue | 6 +++--- src/store/index.js | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue index 173a0692..49c2869e 100644 --- a/src/layouts/welcome-page/welcome-page.vue +++ b/src/layouts/welcome-page/welcome-page.vue @@ -309,8 +309,8 @@ export default { isCoverageEnabled() { return this.mainStore.issConfig.isCoverageEnabled; }, - isCoverageLookupEnabled() { - return this.mainStore.applicationUser.coverageAttempts <= 10; + maxCoverageLookupAttemptsReached() { + return this.mainStore.applicationUser.coverageAttempts >= 10; } }, methods: { @@ -319,7 +319,7 @@ export default { await this.mainStore.getDuplicateReferrals() .then(() => {}, () => {}) .finally(async () => { - if (this.isCoverageEnabled && this.isCoverageLookupEnabled) { + if (this.isCoverageEnabled && !this.maxCoverageLookupAttemptsReached) { await this.mainStore.getCoveragePolicyInfo()?.then(() => {}, () => {}); } else { this.mainStore.order.policy.policyLookupSuccessful = false; diff --git a/src/store/index.js b/src/store/index.js index bedffae4..7263be4d 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -441,7 +441,7 @@ export const useMainStore = defineStore({ const { order } = this; const { policy } = order; this.applicationUser.coverageAttempts += 1; - console.log(`Coverage attempt #${this.applicationUser.coverageAttempts}. Max attempts allowed: 10.`); + console.log(`Coverage lookup attempt #${this.applicationUser.coverageAttempts}. Max attempts allowed: 10.`); return new Promise((resolve, reject) => { globalMethods.callHttpClient({ method: endpoints.CoveragePolicyInfo.method, From 7e938db2f970c543cd5326e3fc9717557b95a3d6 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 11 Jan 2024 12:12:02 -0500 Subject: [PATCH 6/8] unit test fixes --- src/layouts/welcome-page/welcome-page.spec.js | 4 ++-- src/layouts/welcome-page/welcome-page.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/layouts/welcome-page/welcome-page.spec.js b/src/layouts/welcome-page/welcome-page.spec.js index fafea6a0..c33666dd 100644 --- a/src/layouts/welcome-page/welcome-page.spec.js +++ b/src/layouts/welcome-page/welcome-page.spec.js @@ -219,7 +219,7 @@ describe('navigation', () => { expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); expect(wrapper.vm.mainStore.getCoveragePolicyInfo).toHaveBeenCalled(); }); - test('if isCoverageLookupEnabled is false, then getCoveragePolicyInfo not called', async () => { + test('if maxCoverageLookupAttemptsReached is true, then getCoveragePolicyInfo not called', async () => { // Arrange const { wrapper } = getMountedComponent({}); useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); @@ -232,7 +232,7 @@ describe('navigation', () => { expect(wrapper.vm.mainStore.updatePolicyData).toHaveBeenCalled(); expect(wrapper.vm.mainStore.getCoveragePolicyInfo).not.toHaveBeenCalled(); }); - test('if isCoverageLookupEnabled is true, then getCoveragePolicyInfo called', async () => { + test('if maxCoverageLookupAttemptsReached is false, then getCoveragePolicyInfo called', async () => { // Arrange const { wrapper } = getMountedComponent({}); useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); diff --git a/src/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue index 49c2869e..3b1535bf 100644 --- a/src/layouts/welcome-page/welcome-page.vue +++ b/src/layouts/welcome-page/welcome-page.vue @@ -310,7 +310,7 @@ export default { return this.mainStore.issConfig.isCoverageEnabled; }, maxCoverageLookupAttemptsReached() { - return this.mainStore.applicationUser.coverageAttempts >= 10; + return this.mainStore.applicationUser.coverageAttempts >= 11; } }, methods: { From 373c1da2ace8c2f9729b179889267f509481be46 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 11 Jan 2024 12:13:41 -0500 Subject: [PATCH 7/8] name change --- src/store/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index 7263be4d..415f7d1c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -186,7 +186,7 @@ const getDefaultState = () => ({ triggeredSiteEntry: false, // TODO not in save session duplicateOrders: [], hasSentSaveQuoteEmail: null, - coverageAttempts: 0 + coverageLookupAttempts: 0 }, issConfig: { clientName: 'Generic Insurance', // this is the default and will be overriden by the client's name From 25bb899dc7c7d5805b8bd9c675a6cbdafbcf39cd Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Thu, 11 Jan 2024 12:15:02 -0500 Subject: [PATCH 8/8] name changes part 2 --- src/layouts/welcome-page/welcome-page.spec.js | 4 ++-- src/layouts/welcome-page/welcome-page.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/layouts/welcome-page/welcome-page.spec.js b/src/layouts/welcome-page/welcome-page.spec.js index c33666dd..38733d63 100644 --- a/src/layouts/welcome-page/welcome-page.spec.js +++ b/src/layouts/welcome-page/welcome-page.spec.js @@ -223,7 +223,7 @@ describe('navigation', () => { // Arrange const { wrapper } = getMountedComponent({}); useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); - useMainStore().applicationUser.coverageAttempts = 11; + useMainStore().applicationUser.coverageLookupAttempts = 11; // Act await wrapper.vm.forwardButtonAction(); @@ -236,7 +236,7 @@ describe('navigation', () => { // Arrange const { wrapper } = getMountedComponent({}); useMainStore().getDuplicateReferrals = jest.fn().mockImplementation(() => Promise.resolve({})); - useMainStore().applicationUser.coverageAttempts = 10; + useMainStore().applicationUser.coverageLookupAttempts = 10; // Act await wrapper.vm.forwardButtonAction(); diff --git a/src/layouts/welcome-page/welcome-page.vue b/src/layouts/welcome-page/welcome-page.vue index 3b1535bf..c2b8c4ca 100644 --- a/src/layouts/welcome-page/welcome-page.vue +++ b/src/layouts/welcome-page/welcome-page.vue @@ -310,7 +310,7 @@ export default { return this.mainStore.issConfig.isCoverageEnabled; }, maxCoverageLookupAttemptsReached() { - return this.mainStore.applicationUser.coverageAttempts >= 11; + return this.mainStore.applicationUser.coverageLookupAttempts >= 11; } }, methods: {