From bf41d0837b2c85fc2a9ed9305ac3b2a9b0155232 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Tue, 26 Mar 2024 14:30:17 -0400 Subject: [PATCH] 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; + } }