diff --git a/src/common-components/funnel-header/menu-modal/menu-modal.vue b/src/common-components/funnel-header/menu-modal/menu-modal.vue index b0ac81691..30e7fa6b3 100644 --- a/src/common-components/funnel-header/menu-modal/menu-modal.vue +++ b/src/common-components/funnel-header/menu-modal/menu-modal.vue @@ -36,14 +36,33 @@ diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 34c5aa3c0..de01a34bd 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -4,15 +4,15 @@ const storeActions = { GET_HOMEPAGE_NAME: "getHomepageName", GET_PAGE_DATA: "getPageData", - // Vehicle Actions - GET_VEHICLE_YEARS: "getVehicleYears", - GET_VEHICLE_MAKES: "getVehicleMakes", - GET_VEHICLE_MODELS: "getVehicleModels", - GET_VEHICLE_STYLES: "getVehicleStyles", - SET_VEHICLE: "setVehicle", - GET_DAMAGE_OPTIONS: "getDamageOptions", - GET_EVOX_IMAGE: "getEvoxImage", - IS_VIN_OPTIONAL_VEHICLE: "isVinOptionalVehicle", + // Vehicle Actions + GET_VEHICLE_YEARS: "getVehicleYears", + GET_VEHICLE_MAKES: "getVehicleMakes", + GET_VEHICLE_MODELS: "getVehicleModels", + GET_VEHICLE_STYLES: "getVehicleStyles", + SET_VEHICLE: "setVehicle", + GET_DAMAGE_OPTIONS: "getDamageOptions", + GET_EVOX_IMAGE: "getEvoxImage", + IS_VIN_OPTIONAL_VEHICLE: "isVinOptionalVehicle", // Lookup Actions LOOKUP_VEHICLE_BY_YMMS: "lookupVehicleByYmms", diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js index 01d5328f5..5d02f5dc6 100644 --- a/src/helpers/heritage-integration/navigation-helper.js +++ b/src/helpers/heritage-integration/navigation-helper.js @@ -76,10 +76,10 @@ async function getLatestPageForRedirection() { const vinOptionalVehiclePromise = store.dispatch(storeActions.IS_VIN_OPTIONAL_VEHICLE); const promiseResultMap = [ - { - resultKey: "vinOptionalOptions", - promise: vinOptionalVehiclePromise, - }, + { + resultKey: "vinOptionalOptions", + promise: vinOptionalVehiclePromise, + }, ]; const resultMap = await settleAllPromises(promiseResultMap); @@ -104,8 +104,11 @@ async function getLatestPageForRedirection() { return fmgPageValues.VEHICLE_PARTS; } else if (partQuestionsComponent.methods.arePagePrerequisitesValid()) { return fmgPageValues.PART_QUESTIONS; - } - else if (vinLookupComponent.methods.arePagePrerequisitesValid() && !store.getters.damage.isRepair && !isVinOptionalVehicle) { + } else if ( + vinLookupComponent.methods.arePagePrerequisitesValid() && + !store.getters.damage.isRepair && + !isVinOptionalVehicle + ) { return fmgPageValues.VIN_LOOKUP; } else { return fmgPageValues.ESTIMATE; diff --git a/src/helpers/heritage-integration/navigation-helper.spec.js b/src/helpers/heritage-integration/navigation-helper.spec.js index 9f9d00516..263fd054f 100644 --- a/src/helpers/heritage-integration/navigation-helper.spec.js +++ b/src/helpers/heritage-integration/navigation-helper.spec.js @@ -26,8 +26,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -47,8 +47,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -69,8 +69,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -92,8 +92,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -116,8 +116,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -141,8 +141,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -171,8 +171,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -201,8 +201,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -231,8 +231,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -261,8 +261,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -291,8 +291,8 @@ describe("getPageToRouteExistingOrderTo", () => { query: {}, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Mock out the lazy load calls for all components. mockLazyLoadComponentReturnValues({ @@ -323,8 +323,8 @@ describe("getPageToRouteExistingOrderTo", () => { }, }; - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); // Act const result = await getPageToRouteExistingOrderTo(toRoute, true); diff --git a/src/layouts/estimate/estimate.spec.js b/src/layouts/estimate/estimate.spec.js index 21c0a1cec..4e533bb70 100644 --- a/src/layouts/estimate/estimate.spec.js +++ b/src/layouts/estimate/estimate.spec.js @@ -61,8 +61,8 @@ describe("estimate.vue", () => { selectedVinLookupMethod: vinLookupMethodSelections.MANUALVIN, }); - store.commit( storeMutations.UPDATE_IS_REPAIR, false ); - store.commit( storeMutations.UPDATE_MAKE, "acura" ); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); //Act await wrapper.vm.forwardButtonAction(); @@ -220,16 +220,21 @@ describe("estimate.vue", () => { }); describe("skipVinLookup", () => { - const skipOptions = [[true, true, true], - [true, false, true], - [false, true, true], - [false, false, false]]; - test.each(skipOptions)("isRepair %s and isVinOptional %s should return %s", async (isRepair, isVinOptionalVehicle, expectedVinSkip) => { - const { wrapper } = setupMocks({ isVinOptionalVehicle: isVinOptionalVehicle}); - store.commit( storeMutations.UPDATE_IS_REPAIR, isRepair); + const skipOptions = [ + [true, true, true], + [true, false, true], + [false, true, true], + [false, false, false], + ]; + test.each(skipOptions)( + "isRepair %s and isVinOptional %s should return %s", + async (isRepair, isVinOptionalVehicle, expectedVinSkip) => { + const { wrapper } = setupMocks({ isVinOptionalVehicle: isVinOptionalVehicle }); + store.commit(storeMutations.UPDATE_IS_REPAIR, isRepair); - expect(wrapper.vm.skipVinLookup).toEqual(expectedVinSkip); - }); + expect(wrapper.vm.skipVinLookup).toEqual(expectedVinSkip); + } + ); }); function setupMocks({ diff --git a/src/layouts/estimate/estimate.vue b/src/layouts/estimate/estimate.vue index ece6f72a5..058077d39 100644 --- a/src/layouts/estimate/estimate.vue +++ b/src/layouts/estimate/estimate.vue @@ -171,7 +171,7 @@ export default { this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route); }, async forwardButtonAction() { - if (this.skipVinLookup){ + if (this.skipVinLookup) { const zipCodeData = await this.getZipCodeData(this.serviceZipCode); //todo: validation await this.dispatchStoreAction(storeActions.SAVE_EMAIL, this.emailAddress, false); diff --git a/src/store/index.js b/src/store/index.js index 91b7aac1e..88dfd023c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1316,26 +1316,6 @@ export const actions = { !sortedPreviousResultsArray?.every( (x, i) => x.partNum === sortedMoldingQuestionAnswersArray[i].partNum ); - - isVinOptionalVehicle(context){ - switch((context.state.order.vehicle.make).toLowerCase()) { - case "mercedes benz": - case "volkswagen": - case "audi": - case "porsche": - return true; - default: - } - - if ((context.state.order.vehicle.make).toLowerCase() === "ford" && context.state.order.vehicle.year >= 2018) - return true; - - if ((context.state.order.vehicle.make).toLowerCase() === "bmw" && context.state.order.vehicle.year <= 2017) - return true; - - return false; - } -} if (haveMoldingQuestionAnswersChanged) { context.commit(storeMutations.UPDATE_GLASS_PARTS, null); @@ -1407,6 +1387,31 @@ export const actions = { clearVin(context) { context.commit(storeMutations.UPDATE_VEHICLE_VIN, null); }, + + isVinOptionalVehicle(context) { + switch (context.state.order.vehicle.make.toLowerCase()) { + case "mercedes benz": + case "volkswagen": + case "audi": + case "porsche": + return true; + default: + } + + if ( + context.state.order.vehicle.make.toLowerCase() === "ford" && + context.state.order.vehicle.year >= 2018 + ) + return true; + + if ( + context.state.order.vehicle.make.toLowerCase() === "bmw" && + context.state.order.vehicle.year <= 2017 + ) + return true; + + return false; + }, }; export default createStore({ diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 600a45030..7ca65cc74 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -2713,26 +2713,31 @@ describe("Getters", () => { }); describe("isVinOptionalVehicle", () => { - const testVehicles = [["2017", "acura", false], - ["2017", "ford", false], - ["2018", "ford", true], - ["2018", "bmw", false], - ["2017", "bmw", true], - ["2016", "bmw", true], - ["2016", "mercedes benz", true], - ["2016", "volkswagen", true], - ["2016", "audi", true], - ["2016", "porsche", true]]; - test.each(testVehicles)("%s %s should skip vin lookup is %s", async (year, make, expectedVinSkip) => { - const context = state; + const testVehicles = [ + ["2017", "acura", false], + ["2017", "ford", false], + ["2018", "ford", true], + ["2018", "bmw", false], + ["2017", "bmw", true], + ["2016", "bmw", true], + ["2016", "mercedes benz", true], + ["2016", "volkswagen", true], + ["2016", "audi", true], + ["2016", "porsche", true], + ]; + test.each(testVehicles)( + "%s %s should skip vin lookup is %s", + async (year, make, expectedVinSkip) => { + const context = state; - context.state = { - order: { - vehicle: { year: year, make: make} - } - }; + context.state = { + order: { + vehicle: { year: year, make: make }, + }, + }; - var vinOptionalResult = actions.isVinOptionalVehicle(context); - expect(vinOptionalResult).toEqual(expectedVinSkip); - }); -}); \ No newline at end of file + var vinOptionalResult = actions.isVinOptionalVehicle(context); + expect(vinOptionalResult).toEqual(expectedVinSkip); + } + ); +}); diff --git a/src/ux-components/text-link/text-link.vue b/src/ux-components/text-link/text-link.vue index e6cd2aece..6d6c7a0e3 100644 --- a/src/ux-components/text-link/text-link.vue +++ b/src/ux-components/text-link/text-link.vue @@ -1,8 +1,21 @@