From bf41d0837b2c85fc2a9ed9305ac3b2a9b0155232 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 26 Mar 2024 14:30:17 -0400 Subject: [PATCH 1/5] add page pre-reqs + one minor styling change + unit tests --- .../order-confirmation.spec.js | 15 +++++++ .../order-confirmation/order-confirmation.vue | 41 +++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/layouts/order-confirmation/order-confirmation.spec.js b/src/layouts/order-confirmation/order-confirmation.spec.js index 47e0f137..f6230c3c 100644 --- a/src/layouts/order-confirmation/order-confirmation.spec.js +++ b/src/layouts/order-confirmation/order-confirmation.spec.js @@ -8,6 +8,7 @@ import settleAllPromises from '@/helpers/layout-helper.js'; import { fetchCmsContentForPage } from '@/helpers/cms-content-helper'; import { mount } from '@vue/test-utils'; import { createTestingPinia } from '@pinia/testing'; +import { nextTick } from 'vue'; jest.mock('@/helpers/layout-helper.js', () => jest.fn()); @@ -167,6 +168,20 @@ describe('OrderConfirmation.vue', () => { afterEach(() => { window.sessionStorage.removeItem('submittedOrder'); }); + describe('Page pre-requisites', () => { + test('If submitted order saved to store, page pre-reqs return true', async () => { + // Arrange + window.sessionStorage.setItem('submittedOrder', JSON.stringify(sessionStorage)); + const { wrapper } = getMountedComponent(initialStore); + + // Act + const arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); + await nextTick(); + + // Assert + expect(arePagePrerequisitesValid).toBe(true); + }); + }); describe('Rendering', () => { test('Should render Site Header', () => { // Arrange diff --git a/src/layouts/order-confirmation/order-confirmation.vue b/src/layouts/order-confirmation/order-confirmation.vue index 8fcf3c54..5bed06dc 100644 --- a/src/layouts/order-confirmation/order-confirmation.vue +++ b/src/layouts/order-confirmation/order-confirmation.vue @@ -270,6 +270,44 @@ export default { } }, methods: { + arePagePrerequisitesValid() { + if (useMainStore().hasSubmittedOrder) { + return true; + } + + // Service Location + const { serviceLocation } = this.submittedOrder; + const mobileReqs = !!( + serviceLocation.address + && serviceLocation.city + && serviceLocation.state + && serviceLocation.zipCode + ); + + const { providerLocation } = this.submittedOrder.serviceLocation.provider.address; + const dropOffInShopReqs = !!( + providerLocation.streetAddress + && providerLocation.city + && providerLocation.state + && providerLocation.zipCode + ); + + const isMobile = serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE + || serviceLocation.appointmentType === AppointmentTypeStrings.MOBILE_NOT_ITAC_AND_NOT_NOCOMP; + + const serviceLocationReqs = + (isMobile && mobileReqs) || (!isMobile && dropOffInShopReqs); + + // Schedule + const { schedule } = this.submittedOrder; + const scheduleReqs = !!(schedule.date && schedule.startTime && schedule.endTime); + + // Customer + const { customer } = this.submittedOrder; + const customerReqs = !!customer.emailAddress; + + return serviceLocationReqs && scheduleReqs && customerReqs; + }, forwardButtonAction() { this.$router.navigateToExternalUrl(this.carrierUrl); }, @@ -355,5 +393,8 @@ $page-side-padding: 1.5rem; font-weight: $font-weight-bold; text-decoration: none; } + :deep(strong) { + color: $black; + } } From 4eabf29468fd418de8b3d2b7fba4c05eee502714 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 26 Mar 2024 15:35:00 -0400 Subject: [PATCH 2/5] another quick styling fix --- src/layouts/order-confirmation/order-confirmation.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/layouts/order-confirmation/order-confirmation.vue b/src/layouts/order-confirmation/order-confirmation.vue index 5bed06dc..e54e6814 100644 --- a/src/layouts/order-confirmation/order-confirmation.vue +++ b/src/layouts/order-confirmation/order-confirmation.vue @@ -394,6 +394,7 @@ $page-side-padding: 1.5rem; text-decoration: none; } :deep(strong) { + font-weight: $font-weight-bold; color: $black; } } From 446a82def76a142ab3cd8d170c8e11f6bef8b05d Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 27 Mar 2024 14:41:05 -0400 Subject: [PATCH 3/5] updates to page pre-reqs --- .../order-confirmation/order-confirmation.vue | 41 +++++++++++++++---- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/src/layouts/order-confirmation/order-confirmation.vue b/src/layouts/order-confirmation/order-confirmation.vue index e54e6814..0d2a2270 100644 --- a/src/layouts/order-confirmation/order-confirmation.vue +++ b/src/layouts/order-confirmation/order-confirmation.vue @@ -95,6 +95,7 @@ export default { }, mixins: [BaseFormMixin], async beforeRouteEnter(to, from, next) { + console.log('beforeRouteEnter just called'); useMainStore().createSubmittedOrder(); // Call APIs const cmsContentPromise = fetchCmsContentForPage(to.query.issPage); @@ -271,12 +272,13 @@ export default { }, methods: { arePagePrerequisitesValid() { + console.log('arePagePrereqsValid was just called'); if (useMainStore().hasSubmittedOrder) { return true; } // Service Location - const { serviceLocation } = this.submittedOrder; + const { serviceLocation } = useMainStore().order; const mobileReqs = !!( serviceLocation.address && serviceLocation.city @@ -284,7 +286,7 @@ export default { && serviceLocation.zipCode ); - const { providerLocation } = this.submittedOrder.serviceLocation.provider.address; + const { providerLocation } = serviceLocation.provider.address; const dropOffInShopReqs = !!( providerLocation.streetAddress && providerLocation.city @@ -298,15 +300,38 @@ export default { const serviceLocationReqs = (isMobile && mobileReqs) || (!isMobile && dropOffInShopReqs); + // Insurance + const isInsuranceSet = useMainStore().order.payment.isInsurance !== null; + // Schedule - const { schedule } = this.submittedOrder; - const scheduleReqs = !!(schedule.date && schedule.startTime && schedule.endTime); + const { schedule } = useMainStore().order; + const scheduleReqs = !!( + schedule.date + && schedule.startTime + && schedule.endTime + && schedule.jobMaxMinutes + && schedule.jobMinMinutes + ); - // Customer - const { customer } = this.submittedOrder; - const customerReqs = !!customer.emailAddress; + // Contact Info + const { contactInfo } = useMainStore().order; + const contactInfoReqs = !!( + contactInfo.firstName + && contactInfo.lastName + && contactInfo.phoneNumber + && contactInfo.emailAddress + ); - return serviceLocationReqs && scheduleReqs && customerReqs; + // Payment + const paymentMethodReqs = useMainStore().order.payment.isPayInAdvance === false; + + return ( + serviceLocationReqs + && isInsuranceSet + && scheduleReqs + && contactInfoReqs + && paymentMethodReqs + ); }, forwardButtonAction() { this.$router.navigateToExternalUrl(this.carrierUrl); From 4f062eb80cc33c6956ae2bc4db830fabb3a748d5 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 27 Mar 2024 16:21:30 -0400 Subject: [PATCH 4/5] final refactor --- src/layouts/order-confirmation/order-confirmation.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/layouts/order-confirmation/order-confirmation.vue b/src/layouts/order-confirmation/order-confirmation.vue index 0d2a2270..c045f651 100644 --- a/src/layouts/order-confirmation/order-confirmation.vue +++ b/src/layouts/order-confirmation/order-confirmation.vue @@ -272,8 +272,8 @@ export default { }, methods: { arePagePrerequisitesValid() { - console.log('arePagePrereqsValid was just called'); - if (useMainStore().hasSubmittedOrder) { + const hasSubmittedOrder = useMainStore().hasSubmittedOrder(); + if (hasSubmittedOrder) { return true; } @@ -286,7 +286,7 @@ export default { && serviceLocation.zipCode ); - const { providerLocation } = serviceLocation.provider.address; + const providerLocation = serviceLocation.provider.address; const dropOffInShopReqs = !!( providerLocation.streetAddress && providerLocation.city From 283adea3f28938e972b7ddb3a66c85cecf2c7581 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Wed, 27 Mar 2024 16:41:59 -0400 Subject: [PATCH 5/5] unit test update --- .../order-confirmation/order-confirmation.spec.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/layouts/order-confirmation/order-confirmation.spec.js b/src/layouts/order-confirmation/order-confirmation.spec.js index f6230c3c..c38a062e 100644 --- a/src/layouts/order-confirmation/order-confirmation.spec.js +++ b/src/layouts/order-confirmation/order-confirmation.spec.js @@ -68,6 +68,16 @@ const initialStore = { zipCode: '12345' } } + }, + payment: { + isInsurance: true, + isPayInAdvance: false + }, + contactInfo: { + firstName: 'Test', + lastName: 'Test', + phoneNumber: '111-111-1111', + emailAddress: 'test@email.com' } } };