From 1910497b2e059605c37961837b3a4615b1334be6 Mon Sep 17 00:00:00 2001 From: Kroell Date: Mon, 24 Apr 2023 13:02:15 -0400 Subject: [PATCH 1/2] military zip alert --- .../service-location/service-location.vue | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 037423df..f5652c18 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -12,7 +12,15 @@ + { vm.setCmsContent(resultMap.cmsContent); + vm.setData( + resultMap.zipCodeData, + resultMap.serviceabilityDetails, + ) }); }, setup() { @@ -111,7 +124,10 @@ export default { zipCode: this.mainStore.order.customer.address.zipCode, state: this.mainStore.order.customer.address.state, isServiceZipServiceable: null, + isGlassServiceableMobile: null, + isRecalibrationServiceableMobile: null, selectedAppointmentType: "", + zipContainsMilitaryBase: false, }; }, computed: { @@ -138,6 +154,16 @@ export default { this.$nextTick(); }, + }, + isServiceableMobile() { + if (this.isRecalibrationServiceableMobile !== null) { + return this.isGlassServiceableMobile && this.isRecalibrationServiceableMobile; + } else { + return this.isGlassServiceableMobile; + } + }, + displayMilitaryZipAlert() { + return this.zipContainsMilitaryBase && this.isServiceableMobile; } }, methods: { @@ -154,7 +180,30 @@ export default { //validate and save data here this.$router.navigate(this.navigationScenarios.CLICKED_FORWARD, this.$route); }, - resetDependentState() {}, + resetDependentState() { + + }, + setData(zipCodeData, serviceabilityDetails) { + if (zipCodeData) { + this.zipContainsMilitaryBase = zipCodeData.containsMilitaryBase; + } + if (serviceabilityDetails) { + this.setServiceabilityDetails(serviceabilityDetails); + } + }, + setContainsMilitaryBase(val) { + if (this.zipContainsMilitaryBase !== val) { + this.zipContainsMilitaryBase = val; + } + }, + setServiceabilityDetails(serviceabilityDetails) { + this.isGlassServiceableInshop = serviceabilityDetails.isGlassServiceableInshop; + this.isRecalibrationServiceableInshop = + serviceabilityDetails.isRecalibrationServiceableInshop; + this.isGlassServiceableMobile = serviceabilityDetails.isGlassServiceableMobile; + this.isRecalibrationServiceableMobile = + serviceabilityDetails.isRecalibrationServiceableMobile; + }, }, components: { siteFooter, @@ -163,6 +212,7 @@ export default { buttonQuestion, Form, serviceZipModalQuestion, + alert }, }; From c6967028e3061850a0c88fdc2fe411625cc02bc7 Mon Sep 17 00:00:00 2001 From: Kroell Date: Mon, 24 Apr 2023 13:25:05 -0400 Subject: [PATCH 2/2] unit test for military zip alert --- .../service-location/service-location.spec.js | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/src/layouts/service-location/service-location.spec.js b/src/layouts/service-location/service-location.spec.js index d402619f..6d1ba5e2 100644 --- a/src/layouts/service-location/service-location.spec.js +++ b/src/layouts/service-location/service-location.spec.js @@ -1,6 +1,34 @@ import { shallowMount } from "@vue/test-utils"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; import serviceLocation from "@/layouts/service-location/service-location.vue"; +import { getServiceabilityDetails, getZipCodeData } from "@/helpers/service-location-helper"; + +// Define Mocks +jest.mock("@/helpers/cms-content-helper", () => ({ + fetchCmsContentForPage: jest.fn(() => { + return Promise.resolve("content"); + }), +})); + +const mockGetServiceabilityDetails = (mockServiceZipCode) => { + const serviceabilityDetails = { + isGlassServiceableInshop: true, + isRecalibrationServiceableInshop: true, + isGlassServiceableMobile: true, + isRecalibrationServiceableMobile: true, + }; + + return Promise.resolve(serviceabilityDetails); +}; + +jest.mock( + "@/helpers/service-location-helper", + () => ({ + getServiceabilityDetails: jest.fn((mockServiceZipCode) => { + return mockGetServiceabilityDetails(mockServiceZipCode); + }), + }) +); const mockMixin = { methods: { @@ -26,6 +54,14 @@ const mockMixin = { }); } + if (zip === "45433") { + return Promise.resolve({ + containsMilitaryBase: true, + isValid: true, + state: "OH", + }); + } + return Promise.resolve({ containsMilitaryBase: false, isValid: false, @@ -98,6 +134,34 @@ describe("updating service zip", () => { // Assert expect(wrapper.vm.selectedAppointmentType).toStrictEqual(null); }); + + test("displays military zip message when zip is updated", () => { + // Arrange + const { wrapper } = setupMocks({}); + + const mobileLocationQuestionsComponent = wrapper.findComponent({ + ref: "mobileLocationQuestions", + }); + mobileLocationQuestionsComponent.resetComponent = jest.fn(); + + const serviceZipCodeComponent = wrapper.findComponent({ + ref: "serviceZipCodeQuestion", + }); + serviceZipCodeComponent.resetMobileFeePart = jest.fn(); + + expect(wrapper.vm.zipContainsMilitaryBase).toBe(false); + + const newServiceZipCodeQuestion = { + zipCode: "45433", + state: "OH", + }; + + // Act + serviceZipCodeComponent.vm.$emit("updated-contains-military-base", true); + + // Assert + expect(wrapper.vm.zipContainsMilitaryBase).toBe(true); + }); }); function setupMocks()