From d8c838f530a5183809de3068afd2e83ee51aba19 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:24:59 -0400 Subject: [PATCH 01/13] Revert "Load session before updating funnel cookie" This reverts commit 73ec3ce9ee682b126e654cda79bb585a0dfea5d8. --- src/router/methods/before-each.js | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 3a293f98b..84514f6c2 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -52,12 +52,6 @@ export async function beforeEach(to, from) { } } - // If sent from heritage, need to load session. - const fromHeritageFlag = consumeQueryFromStash(queryStrings.FROM_HERITAGE); - if (fromHeritageFlag) { - await loadSessionIfPresent(true, routeData.SERVICE_LOCATION.name); - } - // Process funnel cookie. updateOrCreateFunnelCookie(); @@ -67,6 +61,12 @@ export async function beforeEach(to, from) { debugLog(" funnel cookie after: ", getFunnelCookie()); } + // If sent from heritage, need to load session. + const fromHeritageFlag = consumeQueryFromStash(queryStrings.FROM_HERITAGE); + if (fromHeritageFlag) { + await loadSessionIfPresent(true, routeData.SERVICE_LOCATION.name); + } + // Update if logging is enabled. checkLogParam(); From efc354699aa008d98b181c0067242cc88b92d540 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:25:09 -0400 Subject: [PATCH 02/13] Revert "Remove console log" This reverts commit c48f16bb992422bb82093d98379e86f1251cc386. --- src/fmg-components/funnel-header/progress-bar/progress-bar.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue index ebce6e0de..c25476338 100644 --- a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue +++ b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue @@ -13,6 +13,7 @@ export default { data() {}, computed: { progress() { + console.log(`Progress: ${this.pageName} - ${getProgressBarPercentage(this.pageName)}`); return getProgressBarPercentage(this.pageName); }, }, From fa5b4bd4cc1f5e1e088ccc2a4881b646fff15497 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:25:24 -0400 Subject: [PATCH 03/13] Revert "Progress bar cleanup" This reverts commit 5f7840057a9c1ff8451ee31e47078ea298e4cae3. --- .../funnel-header/progress-bar/progres-bar.spec.js | 8 ++++---- .../funnel-header/progress-bar/progress-bar.vue | 14 +++++++++----- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js b/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js index 9970b266c..a8d22cc2c 100644 --- a/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js +++ b/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js @@ -15,7 +15,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.progress).toBe(0); + expect(wrapper.vm.getProgress()).toBe(0); wrapper.unmount(); }); }); @@ -33,7 +33,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.progress).toBe(4); + expect(wrapper.vm.getProgress()).toBe(4); wrapper.unmount(); }); }); @@ -51,7 +51,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.progress).toBe(48); + expect(wrapper.vm.getProgress()).toBe(48); wrapper.unmount(); }); }); @@ -69,7 +69,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.progress).toBe(100); + expect(wrapper.vm.getProgress()).toBe(100); wrapper.unmount(); }); }); diff --git a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue index c25476338..da370e415 100644 --- a/src/fmg-components/funnel-header/progress-bar/progress-bar.vue +++ b/src/fmg-components/funnel-header/progress-bar/progress-bar.vue @@ -10,11 +10,15 @@ import { getProgressBarPercentage } from "@/constants/progress-bar-mapper"; export default { name: "progressBar", - data() {}, - computed: { - progress() { - console.log(`Progress: ${this.pageName} - ${getProgressBarPercentage(this.pageName)}`); - return getProgressBarPercentage(this.pageName); + data() { + return { + progress: this.getProgress(), + }; + }, + methods: { + getProgress() { + var pageName = this.pageName; + return getProgressBarPercentage(pageName); }, }, }; From 47f3a6cee9b82a307d822cb574c7eca643378911 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:25:34 -0400 Subject: [PATCH 04/13] Revert "prettier" This reverts commit 0b7e4f578b8b11499cf8b498432139c456a81879. --- src/router/methods/before-each.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 84514f6c2..734385700 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -90,6 +90,7 @@ export async function beforeEach(to, from) { { debugLog("--- before-each.js end ---"); } + } catch (error) { const errorPayload = { cause: "Uncaught exception in `beforeEach`.", From 25dfa5d74c6343deedbe2acc1856c2e7d821d93a Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:25:51 -0400 Subject: [PATCH 05/13] Revert "debug return from heritage" This reverts commit 910fe50702e52855f61ef7894512a6e3e9062c06. --- src/router/methods/before-each.js | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 734385700..aa4e3a9e4 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -14,18 +14,11 @@ import { runExperiments } from "@/router/methods/helpers/run-experiments"; import { bailout } from "@/router/methods/error"; import { checkPagePrerequisites } from "@/router/methods/page-prerequisites"; import { checkLogParam } from "@/helpers/debug-log-helper"; -import { debugLog } from "@/helpers/debug-log-helper"; export async function beforeEach(to, from) { try { await analyticsMixin.methods.validateSession(); - // prettier-ignore - { - debugLog(`--- before-each.js ${from?.name} start ---`); - debugLog(" funnel cookie init: ", getFunnelCookie()); - } - if (getFunnelCookie()?.SuppressConceptFunnel) { // Redirect to heritage. return { @@ -55,12 +48,6 @@ export async function beforeEach(to, from) { // Process funnel cookie. updateOrCreateFunnelCookie(); - // prettier-ignore - { - debugLog(`--- before-each.js ${from?.name} start ---`); - debugLog(" funnel cookie after: ", getFunnelCookie()); - } - // If sent from heritage, need to load session. const fromHeritageFlag = consumeQueryFromStash(queryStrings.FROM_HERITAGE); if (fromHeritageFlag) { @@ -85,12 +72,6 @@ export async function beforeEach(to, from) { } await runExperiments(to.name); - - // prettier-ignore - { - debugLog("--- before-each.js end ---"); - } - } catch (error) { const errorPayload = { cause: "Uncaught exception in `beforeEach`.", From a0dfd151e1133ce0bfb60546a9026efa273f4e5a Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:27:38 -0400 Subject: [PATCH 06/13] Revert "Only save session on nav if email or phone number is present" This reverts commit 4d481bfd775677123ea52d499975dd3a1e73eb66. --- src/router/methods/navigate.js | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/router/methods/navigate.js b/src/router/methods/navigate.js index b15c955e9..7df947560 100644 --- a/src/router/methods/navigate.js +++ b/src/router/methods/navigate.js @@ -3,7 +3,6 @@ import { buildManualUrl } from "@/router/methods/helpers/build-manual-url"; import { getDestination } from "@/router/methods/helpers/get-destination"; import { savePageData } from "@/router/methods/helpers/save-page-data"; import router from "@/router"; -import store from "@/store"; import { bailout } from "@/router/methods/error"; @@ -35,12 +34,7 @@ async function navigate(scenario, currentPageName, withSaving = false, forceTopL } if (withSaving) { - if ( - store.getters?.applicationUser?.savedSessionId || - store.getters?.order?.customer?.emailAddress - ) { - await saveSession({ pageNameToLog: nextPage.name }); - } + await saveSession({ pageNameToLog: nextPage.name }); } // Some pages require manually setting the next url From 2d65f850f1e98a0f5511300af3d23593aaa9ce77 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:27:56 -0400 Subject: [PATCH 07/13] Revert "Update logging for new router." This reverts commit f0fa576ba2085f89219a0ec12f2bc0ceb7a09e02. --- src/helpers/debug-log-helper.js | 23 ------ .../heritage-integration/navigation-helper.js | 12 +-- src/layouts/payment-method/payment-method.vue | 40 +++++----- src/layouts/payment/payment.vue | 80 ++++++++----------- src/layouts/quote/quote.vue | 46 +++++++---- src/layouts/schedule/schedule.vue | 22 ++--- src/layouts/vehicle/vehicle.vue | 14 ++-- src/mixins/base-mixin.js | 7 +- src/router/methods/before-each.js | 4 - 9 files changed, 116 insertions(+), 132 deletions(-) delete mode 100644 src/helpers/debug-log-helper.js diff --git a/src/helpers/debug-log-helper.js b/src/helpers/debug-log-helper.js deleted file mode 100644 index ea0ac3337..000000000 --- a/src/helpers/debug-log-helper.js +++ /dev/null @@ -1,23 +0,0 @@ -import store from "@/store"; -import { getQuerystringParameter } from "@/helpers/querystring-helper"; -import { queryStrings } from "@/constants/query-strings"; -import { storeActions } from "@/constants/store-actions"; - -export function debugLog(message, data, forceLog = false) { - checkLogParam(); - - if (store?.getters?.applicationUser?.loggingOption || forceLog) { - data = data ?? ""; - const outData = typeof data === "object" ? JSON.stringify(data) : data; - - console.log(`${new Date()} ${message} ${outData}`); - } -} - -export function checkLogParam() { - const logQueryString = getQuerystringParameter(queryStrings.LOG); - - if (logQueryString) { - store?.dispatch(storeActions?.SAVE_LOGGING_OPTION, logQueryString); - } -} diff --git a/src/helpers/heritage-integration/navigation-helper.js b/src/helpers/heritage-integration/navigation-helper.js index 90f9593b9..ca547b980 100644 --- a/src/helpers/heritage-integration/navigation-helper.js +++ b/src/helpers/heritage-integration/navigation-helper.js @@ -8,16 +8,18 @@ import { includesWindshieldReplacement } from "@/helpers/damage-helper"; import { applicationConfig } from "@/constants/application-config.js"; import store from "@/store"; import router from "@/router"; -import { debugLog } from "@/helpers/debug-log-helper"; /* Used to navigate to the heritage funnel with the correct query string and url. */ export async function navigateToHeritageFunnel({ shouldSaveSession, pageNameToLog, navType }) { - debugLog("--- Navigate to heritage start ---"); - debugLog("applicationConfig:", applicationConfig); - debugLog("navigateToHeritageFunnel:", applicationConfig.HERITAGE_FUNNEL); - debugLog("--- Navigate to heritage end ---"); + const log = getQuerystringParameter(queryStrings.LOG); + if (log === "true") { + console.log("------------- Navigate to heritage start -----------------"); + console.log(new Date() + " applicationConfig: " + JSON.stringify(applicationConfig)); + console.log(new Date() + " navigateToHeritageFunnel: " + applicationConfig.HERITAGE_FUNNEL); + console.log("------------- Navigate to heritage end -----------------"); + } // Create the order (or save existing order) when navigating to Heritage Funnel. if (shouldSaveSession) { diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index e0de7fc0f..e2debfe4a 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -168,7 +168,6 @@ import { getSalesTax, } from "@/helpers/pricing-helper.js"; import { consumeQueryFromStash } from "@/router/methods/helpers/querystring-stash"; -import { debugLog } from "@/helpers/debug-log-helper"; defineRule("payment-method-required", required(errorMessages.OPTION_REQUIRED)); defineRule("recal-ack-required", required(errorMessages.RECAL_ACK_REQUIRED)); @@ -441,25 +440,26 @@ export default { // prettier-ignore { - debugLog("--- payment-method.vue pagePrereqs start ---", null, !preReqResult); - debugLog("serviceLocationRequs::isMobile:", isMobile, !preReqResult); - debugLog("serviceLocationReqs::mobileReqs:", mobileReqs, !preReqResult); - debugLog("serviceLocationReqs::dropOffInshopReqs:", dropOffInshopReqs, !preReqResult); - debugLog("serviceLocationReqs:: result", serviceLocationReqs, !preReqResult); - - debugLog("isInsuranceSet::", isInsuranceSet(), !preReqResult); - - debugLog("scheduleReqs::schedule.date:", schedule.date, !preReqResult); - debugLog("scheduleReqs::schedule.startTime:", schedule.startTime, !preReqResult); - debugLog("scheduleReqs::schedule.endTime:", schedule.endTime, !preReqResult); - debugLog("scheduleReqs::schedule.jobMaxMinutes:", schedule.jobMaxMinutes, !preReqResult); - debugLog("scheduleReqs::schedule.jobMinMinutes:", schedule.jobMinMinutes, !preReqResult); - - debugLog("customerReqs::customer.firstName:", customer.firstName, !preReqResult); - debugLog("customerReqs::customer.lastName:", customer.lastName, !preReqResult); - debugLog("customerReqs::customer.phoneNumber:", customer.phoneNumber, !preReqResult); - debugLog("customerReqs::customer.emailAddress:", customer.emailAddress, !preReqResult); - debugLog("--- payment-method.vue pagePrereqs end ---", null, !preReqResult); + const log = getQuerystringParameter(queryStrings.LOG); + const logAsBool = getBoolFromString(log); + if (logAsBool || !preReqResult) { + console.log("------------- payment-method.vue pagePrereqs start -----------------"); + console.log(new Date() + " serviceLocationReqs::isMobile: " + isMobile); + console.log(new Date() + " serviceLocationReqs::mobileReqs: " + mobileReqs); + console.log(new Date() + " serviceLocationReqs::dropOffInshopReqs: " + dropOffInshopReqs); + console.log(new Date() + " serviceLocationReqs:: result " + serviceLocationReqs); + console.log(new Date() + " isInsuranceSet:: " + isInsuranceSet()); + console.log(new Date() + " scheduleReqs::schedule.date:" + schedule.date); + console.log(new Date() + " scheduleReqs::schedule.startTime:" + schedule.startTime); + console.log(new Date() + " scheduleReqs::schedule.endTime:" + schedule.endTime); + console.log(new Date() + " scheduleReqs::schedule.jobMaxMinutes:" + schedule.jobMaxMinutes); + console.log(new Date() + " scheduleReqs::schedule.jobMinMinutes:" + schedule.jobMinMinutes); + console.log(new Date() + " customerReqs::customer.firstName:" + customer.firstName); + console.log(new Date() + " customerReqs::customer.lastName:" + customer.lastName); + console.log(new Date() + " customerReqs::customer.phoneNumber:" + customer.phoneNumber); + console.log(new Date() + " customerReqs::customer.emailAddress:" + customer.emailAddress); + console.log("------------- payment-method.vue pagePrereqs end -----------------"); + } } return preReqResult; diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 745d5ebe1..40d772dbb 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -238,7 +238,6 @@ import { getSubTotal, getSalesTax, } from "@/helpers/pricing-helper.js"; -import { debugLog } from "@/helpers/debug-log-helper.js"; export default { name: "payment", @@ -546,50 +545,41 @@ export default { // prettier-ignore { - debugLog("--- payment.vue pagePrereqs start ---", null, !preReqResult); - debugLog("mobileReqs:", mobileReqs, !preReqResult); - debugLog("serviceLocation.address:", serviceLocation.address, !preReqResult); - debugLog("serviceLocation.city:", serviceLocation.city, !preReqResult); - debugLog("serviceLocation.state:", serviceLocation.state, !preReqResult); - debugLog("serviceLocation.zipCode:", serviceLocation.zipCode, !preReqResult); - - debugLog("", null, !preReqResult); - - debugLog("dropOffInshopReqs:", dropOffInshopReqs, !preReqResult); - debugLog("serviceLocationReqs:", serviceLocationReqs, !preReqResult); - debugLog("providerLocation.streetAddress:", providerLocation.streetAddress, !preReqResult); - debugLog("providerLocation.city:", providerLocation.city, !preReqResult); - debugLog("providerLocation.state:", providerLocation.state, !preReqResult); - debugLog("providerLocation.zipCode:", providerLocation.zipCode, !preReqResult); - - debugLog("", null, !preReqResult); - - debugLog("isInsuranceSet:", isInsuranceSet, !preReqResult); - - debugLog("", null, !preReqResult); - - debugLog("scheduleReqs:", scheduleReqs, !preReqResult); - debugLog("schedule.date:", schedule.date, !preReqResult); - debugLog("schedule.startTime:", schedule.startTime, !preReqResult); - debugLog("schedule.endTime:", schedule.endTime, !preReqResult); - debugLog("schedule.jobMaxMinutes:", schedule.jobMaxMinutes, !preReqResult); - debugLog("schedule.jobMinMinutes:", schedule.jobMinMinutes, !preReqResult); - - debugLog("", null, !preReqResult); - - debugLog("customerReqs:", customerReqs, !preReqResult); - debugLog("customer.firstName:", customer.firstName, !preReqResult); - debugLog("customer.lastName:", customer.lastName, !preReqResult); - debugLog("customer.phoneNumber:", customer.phoneNumber, !preReqResult); - debugLog("customer.emailAddress:", customer.emailAddress, !preReqResult); - - debugLog("", null, !preReqResult); - - debugLog("paymentMethodReqs:", paymentMethodReqs, !preReqResult); - debugLog("store.getters.order.payment.isPia:", store.getters.order?.payment?.isPia, !preReqResult); - debugLog("store.getters.order.payment.piaType:", store.getters.order?.payment?.piaType, !preReqResult); - - debugLog("--- payment.vue pagePrereqs end ---", null, !preReqResult); + if (store.getters.applicationUser.loggingOption || !preReqResult) { + console.log("------------- payment.vue pagePrereqs start -----------------"); + console.log(new Date() + "mobileReqs:" + mobileReqs); + console.log(new Date() + "serviceLocation.address:" + serviceLocation.address); + console.log(new Date() + "serviceLocation.city:" + serviceLocation.city); + console.log(new Date() + "serviceLocation.state:" + serviceLocation.state); + console.log(new Date() + "serviceLocation.zipCode:" + serviceLocation.zipCode); + console.log(""); + console.log(new Date() + "dropOffInshopReqs:" + dropOffInshopReqs); + console.log(new Date() + "serviceLocationReqs:" + serviceLocationReqs); + console.log(new Date() + "providerLocation.streetAddress:" + providerLocation.streetAddress); + console.log(new Date() + "providerLocation.city:" + providerLocation.city); + console.log(new Date() + "providerLocation.state:" + providerLocation.state); + console.log(new Date() + "providerLocation.zipCode:" + providerLocation.zipCode); + console.log(""); + console.log(new Date() + "isInsuranceSet:" + isInsuranceSet); + console.log(""); + console.log(new Date() + "scheduleReqs:" + scheduleReqs); + console.log(new Date() + "schedule.date:" + schedule.date); + console.log(new Date() + "schedule.startTime:" + schedule.startTime); + console.log(new Date() + "schedule.endTime:" + schedule.endTime); + console.log(new Date() + "schedule.jobMaxMinutes:" + schedule.jobMaxMinutes); + console.log(new Date() + "schedule.jobMinMinutes:" + schedule.jobMinMinutes); + console.log(""); + console.log(new Date() + "customerReqs:" + customerReqs); + console.log(new Date() + "customer.firstName:" + customer.firstName); + console.log(new Date() + "customer.lastName:" + customer.lastName); + console.log(new Date() + "customer.phoneNumber:" + customer.phoneNumber); + console.log(new Date() + "customer.emailAddress:" + customer.emailAddress); + console.log(""); + console.log(new Date() + "paymentMethodReqs:" + paymentMethodReqs); + console.log(new Date() + "store.getters.order.payment.isPia:" + store.getters.order.payment.isPia); + console.log(new Date() + "store.getters.order.payment.piaType:" + store.getters.order.payment.piaType); + console.log("------------- payment.vue pagePrereqs end -------------------"); + } } return preReqResult; diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index e7039da54..a31719dbd 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -171,7 +171,6 @@ import { showFmgLoadingModal } from "@/helpers/loading-modal-helper"; import { routeData } from "@/router/constants/routes"; import { consumeQueryFromStash } from "@/router/methods/helpers/querystring-stash"; import { storeMutations } from "@/constants/store-mutations"; -import { debugLog } from "@/helpers/debug-log-helper"; defineRule("option-required", required(errorMessages.OPTION_REQUIRED)); @@ -463,7 +462,9 @@ export default { baseMixin.methods.getTierOnePackagePrice(lineItemsNoDiscount); // prettier-ignore { - debugLog("quote tierOnePrice comparison: " + tierOnePrice + " > " + insuranceThreshold + "=" + (tierOnePrice > insuranceThreshold)); + if (store.getters.applicationUser.loggingOption) { + console.log(new Date() + " quote tierOnePrice comparison: " + tierOnePrice + " > " + insuranceThreshold + "=" + (tierOnePrice > insuranceThreshold)); + } } // compare base price vs arbitrary threshold (representing insurance price) @@ -484,17 +485,21 @@ export default { // prettier-ignore { - debugLog("--- quote.vue thresholds start ---"); - debugLog(" isExternalParameter: ", isExternalParameter); - debugLog(" internalThreshold: ", internalThreshold); - debugLog(" externalThreshold: ", externalThreshold); - debugLog("--- quote.vue thresholds end ---"); + if (store.getters.applicationUser.loggingOption) { + console.log("------------- quote.vue thresholds start -----------------"); + console.log(new Date() + " isExternalParameter: " + isExternalParameter); + console.log(new Date() + " internalThreshold: " + internalThreshold); + console.log(new Date() + " externalThreshold: " + externalThreshold); + console.log("------------- quote.vue thresholds end -----------------"); + } } if (isExternalParameter === externalParameterStatus.NOT_SET) { // prettier-ignore { - debugLog("quote.vue tab select EXTERNAL not set"); + if (store.getters.applicationUser.loggingOption) { + console.log(new Date() + "quote.vue tab select EXTERNAL not set"); + } } // there are no active or inactive external parameters; use internal threshold if (internalThreshold) thresholdToUse = internalThreshold; @@ -509,7 +514,9 @@ export default { if (getBoolFromString(store.getters.externalParameterQuote?.isInsurance)) { // prettier-ignore { - debugLog("quote.vue tab select EXTERNAL ISINSURANCE"); + if (store.getters.applicationUser.loggingOption) { + console.log(new Date() + "quote.vue tab select EXTERNAL ISINSURANCE"); + } } const insuranceSelection = true; @@ -528,7 +535,9 @@ export default { // prettier-ignore { - debugLog("quote.vue tab select NOT EXTERNAL"); + if (store.getters.applicationUser.loggingOption) { + console.log(new Date() + "quote.vue tab select NOT EXTERNAL"); + } } vm.isInsuranceSelected = getIsInsuranceSelectedValue( @@ -644,13 +653,16 @@ export default { // prettier-ignore { - debugLog("--- quote.vue pagePrereqs start ---", null, !preReqResult); - debugLog("store.getters.order.serviceLocation.zipCode:", store.getters.order.serviceLocation?.zipCode, !preReqResult); - debugLog("store.getters.order.serviceLocation.zipCodeCtu:", store.getters.order.serviceLocation?.zipCodeCtu, !preReqResult); - debugLog("store.getters.order.damage.isRepair:", store.getters.order.damage?.isRepair, !preReqResult); - debugLog("store.getters.order.lineItems?.glassParts:", store.getters.order.lineItems?.glassParts, !preReqResult); - debugLog("store.getters.order.payemt.insuranceCoverage?.isVerified:", store.getters.order.payment?.insuranceCoverage?.isVerified, !preReqResult); - debugLog("--- quote.vue pagePrereqs end ---", null, !preReqResult); + const log = getQuerystringParameter(queryStrings.LOG); + if (log === "true" || !preReqResult) { + console.log("------------- quote.vue pagePrereqs start -----------------"); + console.log(new Date() + " store.getters.order.serviceLocation.zipCode: " + store.getters.order.serviceLocation?.zipCode); + console.log(new Date() +" store.getters.order.serviceLocation.zipCodeCtu: " + store.getters.order.serviceLocation?.zipCodeCtu); + console.log(new Date() + " store.getters.order.damage.isRepair: " + store.getters.order.damage?.isRepair); + console.log(new Date() + " store.getters.order.lineItems?.glassParts: " + JSON.stringify(store.getters.order.lineItems?.glassParts)); + console.log(new Date() + " store.getters.order.payment.insuranceCoverage?.isVerified: " + payment?.insuranceCoverage?.isVerified); + console.log("------------- quote.vue pagePrereqs end -----------------"); + } } return preReqResult; diff --git a/src/layouts/schedule/schedule.vue b/src/layouts/schedule/schedule.vue index b752a5d22..b47de1fa8 100644 --- a/src/layouts/schedule/schedule.vue +++ b/src/layouts/schedule/schedule.vue @@ -94,7 +94,6 @@ import { getAmountDue, getPricingByDayPartWithPrice } from "@/helpers/pricing-he import { getItemsWithoutRecalParts } from "@/helpers/recal-helper"; import { partNumberStrings } from "@/constants/part-number-strings"; import { deepClone } from "@/helpers/object-helper"; -import { debugLog } from "@/helpers/debug-log-helper"; // DEFINE VALIDATION RULES defineRule("date-required", required(errorMessages.DATE_REQUIRED)); @@ -429,15 +428,18 @@ export default { // prettier-ignore { - debugLog("--- schedule.vue pagePrereqs start ---", null, !preReqResult); - debugLog("store.getters.order.serviceLocation.zipCode:", serviceLocation.zipCode, !preReqResult); - debugLog("store.getters.order.serviceLocation.zipCodeCtu:", serviceLocation.zipCodeCtu, !preReqResult); - debugLog("store.getters.order.serviceLocation.appointmentType:", serviceLocation.appointmentType, !preReqResult); - debugLog("store.getters.order.serviceLocation.provider.providerNumber:", serviceLocation.provider?.providerNumber, !preReqResult); - debugLog("store.getters.payment.isInsurance:", store.getters.payment?.isInsurance, !preReqResult); - debugLog("store.getters.order.damage.isRepair:", store.getters.order.damage?.isRepair, !preReqResult); - debugLog("store.getters.order.lineItems.glassParts:", store.getters.order.lineItems?.glassParts, !preReqResult); - debugLog("--- schedule.vue pagePrereqs end ---", null, !preReqResult); + const log = getQuerystringParameter(queryStrings.LOG); + if (log === "true" || !preReqResult) { + console.log("------------- schedule.vue pagePrereqs start -----------------"); + console.log(new Date() + " store.getters.order.serviceLocation.zipCode: " + serviceLocation.zipCode); + console.log(new Date() + " store.getters.order.serviceLocation.zipCodeCtu: " + serviceLocation.zipCodeCtu); + console.log(new Date() + " store.getters.order.serviceLocation.appointmentType: " + serviceLocation.appointmentType); + console.log(new Date() + " store.getters.order.serviceLocation.provider.providerNumber: " + serviceLocation.provider.providerNumber); + console.log(new Date() + " store.getters.payment.isInsurance: " + store.getters.payment?.isInsurance); + console.log(new Date() + " store.getters.order.damage.isRepair: " + store.getters.order.damage.isRepair); + console.log(new Date() + " store.getters.order.lineItems.glassParts: " + JSON.stringify(store.getters.order.lineItems?.glassParts)); + console.log("------------- schedule.vue pagePrereqs end -------------------"); + } } return preReqResult; }, diff --git a/src/layouts/vehicle/vehicle.vue b/src/layouts/vehicle/vehicle.vue index 131073f90..174c76530 100644 --- a/src/layouts/vehicle/vehicle.vue +++ b/src/layouts/vehicle/vehicle.vue @@ -114,7 +114,6 @@ import { consumeQueryFromStash, peekQueryFromStash, } from "@/router/methods/helpers/querystring-stash"; -import { debugLog } from "@/helpers/debug-log-helper"; //define validation rules defineRule("year-required", required(errorMessages.YEAR_REQUIRED)); @@ -149,10 +148,15 @@ export default { }, async beforeRouteEnter(to, from, next) { - debugLog("------------- vehicle.vue applicationConfig start -------------"); - debugLog("", applicationConfig); - debugLog("------------- vehicle.vue applicationConfig end -------------"); - + if (store.getters.applicationUser.loggingOption) { + console.log( + new Date() + "------------- vehicle.vue applicationConfig start -------------" + ); + console.log(new Date() + JSON.stringify(applicationConfig)); + console.log( + new Date() + "------------- vehicle.vue applicationConfig end -------------" + ); + } // Call APIs const cmsContentPromise = fetchCmsContentForPage(to.name); const experimentForLogging = store.getters.applicationUser.experiments.find( diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index ecce2632d..3dfca7dbf 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -9,7 +9,6 @@ import { dynamicStrings } from "@/constants/dynamic-strings"; import { partTypeStrings } from "../constants/part-type-strings"; import { showFmgLoadingModal } from "@/helpers/loading-modal-helper"; import { getItemsWithoutRecalParts } from "@/helpers/recal-helper"; -import { debugLog } from "@/helpers/debug-log-helper"; export default { data() { @@ -96,8 +95,10 @@ export default { let totalPrice = this.getTotalPriceOfAllLineItemsAndChildParts(lineItemsToPrice, false); // prettier-ignore { - debugLog("base-mixin getTierOnePackagePrice lineItemsToPrice:", lineItemsToPrice); - debugLog("base-mixin getTierOnePackagePrice totalPrice:", totalPrice); + if (store.getters.applicationUser.loggingOption) { + console.log(new Date() + " base-mixin getTierOnePackagePrice lineItemsToPrice: " + JSON.stringify(lineItemsToPrice)); + console.log(new Date() + " base-mixin getTierOnePackagePrice totalPrice: " + totalPrice); + } } return totalPrice; }, diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index aa4e3a9e4..dae53b583 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -13,7 +13,6 @@ import { runExperiments } from "@/router/methods/helpers/run-experiments"; import { bailout } from "@/router/methods/error"; import { checkPagePrerequisites } from "@/router/methods/page-prerequisites"; -import { checkLogParam } from "@/helpers/debug-log-helper"; export async function beforeEach(to, from) { try { @@ -54,9 +53,6 @@ export async function beforeEach(to, from) { await loadSessionIfPresent(true, routeData.SERVICE_LOCATION.name); } - // Update if logging is enabled. - checkLogParam(); - // Ensure page-prerequisites are fulfilled const arePagePrerequisitesValid = await checkPagePrerequisites(to.name); From 8cd4231ab52442acdee91cde91717ac4195180fc Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:30:35 -0400 Subject: [PATCH 08/13] Revert "prettier" This reverts commit ed8aefd67517dd290f915dbf19fa1cb4ac8b5870. --- src/helpers/unit-test-helper.js | 4 +--- src/layouts/estimate/estimate.spec.js | 2 +- src/layouts/insurance-company/insurance-company.spec.js | 2 +- src/layouts/return-user/return-user.vue | 7 ++++++- src/mixins/vehicle-questions-mixin.spec.js | 7 ++----- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/helpers/unit-test-helper.js b/src/helpers/unit-test-helper.js index 9ac3edde9..8f3d04183 100644 --- a/src/helpers/unit-test-helper.js +++ b/src/helpers/unit-test-helper.js @@ -77,9 +77,7 @@ export function getMountOptions(mockData) { mixins: mockData.mixins, stubs: { Form }, computed: { - pageName() { - return mockData?.route?.name; - }, + pageName() { return mockData?.route?.name }, }, }; const props = mockData.propsData || {}; diff --git a/src/layouts/estimate/estimate.spec.js b/src/layouts/estimate/estimate.spec.js index 5217325f9..38b4ad41e 100644 --- a/src/layouts/estimate/estimate.spec.js +++ b/src/layouts/estimate/estimate.spec.js @@ -263,7 +263,7 @@ function setupMocks({ navigateWithoutSaving: jest.fn(), }, route: { - name: "estimate", + name: "estimate" }, }, }) { diff --git a/src/layouts/insurance-company/insurance-company.spec.js b/src/layouts/insurance-company/insurance-company.spec.js index 7df1f047a..540866d5f 100644 --- a/src/layouts/insurance-company/insurance-company.spec.js +++ b/src/layouts/insurance-company/insurance-company.spec.js @@ -26,7 +26,7 @@ jest.mock("@/mixins/base-mixin.js", () => ({ return { navigationScenarios: { CLICKED_BACK: "clicked_back", - CLICKED_PAY_ON_MY_OWN: "clicked_pay_on_my_own", + CLICKED_PAY_ON_MY_OWN: "clicked_pay_on_my_own" }, }; }, diff --git a/src/layouts/return-user/return-user.vue b/src/layouts/return-user/return-user.vue index 5b397ea76..91df48150 100644 --- a/src/layouts/return-user/return-user.vue +++ b/src/layouts/return-user/return-user.vue @@ -90,7 +90,12 @@ export default { }, async startOver() { - this.pushEventToGA(this.pageName, this.GaActions.CLICKED, "Start over", true); + this.pushEventToGA( + this.pageName, + this.GaActions.CLICKED, + "Start over", + true + ); this.$router.navigateWithoutSaving( this.navigationScenarios.CLICKED_RESTART, this.pageName diff --git a/src/mixins/vehicle-questions-mixin.spec.js b/src/mixins/vehicle-questions-mixin.spec.js index 0fd027258..558adadd0 100644 --- a/src/mixins/vehicle-questions-mixin.spec.js +++ b/src/mixins/vehicle-questions-mixin.spec.js @@ -305,10 +305,7 @@ describe("vehicle-questions-mixin", () => { const { wrapper } = setupMocks({}); // Act - const result = wrapper.vm.currentPageComesBeforePage( - currentPage.name, - nextPage.name - ); + const result = wrapper.vm.currentPageComesBeforePage(currentPage.name, nextPage.name); // Assert expect(result).toEqual(expectedResult); @@ -2422,7 +2419,7 @@ function setupMocks({ fmgPage = routeData.VIN_LOOKUP.name, hasVin, carId }) { }, }, route: { - name: fmgPage, + name: fmgPage }, }); From ec782996dfa777d4ed099ead3e0fdfdb027c1a02 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:30:45 -0400 Subject: [PATCH 09/13] Revert "Unit tests" This reverts commit ef34d643058093f51df5d6ca88c25ac9176df285. --- .../button-question/button-question.spec.js | 2 +- .../progress-bar/progres-bar.spec.js | 29 +- .../questions-page-layout.spec.js | 1 - src/global-methods.spec.js | 2 +- .../navigation-helper.spec.js | 473 +++++++++++++++++- src/helpers/unit-test-helper.js | 3 - .../address-lookup/address-lookup.spec.js | 11 +- src/layouts/estimate/estimate.spec.js | 8 +- .../insurance-company.spec.js | 8 +- .../molding-questions.spec.js | 1 - src/layouts/payment/payment.spec.js | 8 +- src/layouts/quote/quote.spec.js | 4 +- src/layouts/return-user/return-user.spec.js | 14 +- src/layouts/return-user/return-user.vue | 2 +- src/layouts/schedule/schedule.spec.js | 7 +- src/layouts/service-zip/service-zip.spec.js | 27 +- .../vehicle-damage/vehicle-damage.spec.js | 20 +- .../vehicle-parts/vehicle-parts.spec.js | 51 +- src/layouts/vin-lookup/vin-lookup.spec.js | 2 +- src/mixins/base-mixin.spec.js | 2 +- src/mixins/vehicle-questions-mixin.spec.js | 135 ++--- src/mixins/vin-pages-mixin.spec.js | 3 - src/store/store.spec.js | 46 +- 23 files changed, 678 insertions(+), 181 deletions(-) diff --git a/src/digital-components/button-question/button-question.spec.js b/src/digital-components/button-question/button-question.spec.js index 73c048936..3b7a4e80e 100644 --- a/src/digital-components/button-question/button-question.spec.js +++ b/src/digital-components/button-question/button-question.spec.js @@ -1143,7 +1143,7 @@ describe("buttonQuestion.vue", () => { }); function setupMocks(mountOptionsMockData = {}) { - const defaultMountOptions = { route: { name: "page-name" } }; + const defaultMountOptions = { route: { query: { fmgPage: "page-name" } } }; const baseMountOptions = getMountOptions( Object.assign(defaultMountOptions, mountOptionsMockData) ); diff --git a/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js b/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js index a8d22cc2c..92e6e15a5 100644 --- a/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js +++ b/src/fmg-components/funnel-header/progress-bar/progres-bar.spec.js @@ -5,9 +5,6 @@ import store from "@/store"; describe("progressBar", () => { test("progress should be 0", () => { // Arrange - mockMixin.computed = { - pageName: () => undefined, - }; // Act const wrapper = shallowMount(progressBar, { @@ -15,7 +12,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(0); + expect(wrapper.vm.progress).toBe(0); wrapper.unmount(); }); }); @@ -23,8 +20,10 @@ describe("progressBar", () => { describe("progressBar", () => { test("progress should be 4%", () => { // Arrange - mockMixin.computed = { - pageName: () => "vehicle", + store.getters = { + applicationUser: { + lastPageVisited: "vehicle", + }, }; // Act @@ -33,7 +32,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(4); + expect(wrapper.vm.progress).toBe(4); wrapper.unmount(); }); }); @@ -41,8 +40,10 @@ describe("progressBar", () => { describe("progressBar", () => { test("progress should be 48%", () => { // Arrange - mockMixin.computed = { - pageName: () => "quote", + store.getters = { + applicationUser: { + lastPageVisited: "quote", + }, }; // Act @@ -51,7 +52,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(48); + expect(wrapper.vm.progress).toBe(48); wrapper.unmount(); }); }); @@ -59,8 +60,10 @@ describe("progressBar", () => { describe("progressBar", () => { test("progress should be 100%", () => { // Arrange - mockMixin.computed = { - pageName: () => "confirmation", + store.getters = { + applicationUser: { + lastPageVisited: "confirmation", + }, }; // Act @@ -69,7 +72,7 @@ describe("progressBar", () => { }); // Assert - expect(wrapper.vm.getProgress()).toBe(100); + expect(wrapper.vm.progress).toBe(100); wrapper.unmount(); }); }); diff --git a/src/fmg-components/layouts/questions-page-layout/questions-page-layout.spec.js b/src/fmg-components/layouts/questions-page-layout/questions-page-layout.spec.js index 96e5434cd..38b0f3d16 100644 --- a/src/fmg-components/layouts/questions-page-layout/questions-page-layout.spec.js +++ b/src/fmg-components/layouts/questions-page-layout/questions-page-layout.spec.js @@ -245,7 +245,6 @@ function setupMocks() { }; const mountOptions = getMountOptions({ mixins: [baseMixin, vehicleQuestionsMixin], - route: { name: "questions" }, }); mountOptions["attachTo"] = document.body; const wrapper = shallowMount(questionsPageLayout, mountOptions); diff --git a/src/global-methods.spec.js b/src/global-methods.spec.js index c09bf8e97..e6c0e4858 100644 --- a/src/global-methods.spec.js +++ b/src/global-methods.spec.js @@ -38,7 +38,7 @@ it("Global Methods - Call Http Client - Should Reject Promise", () => { isError: true, }); analyticsMixIn.methods.pushEventToGA = jest.fn(); - router.bailout = jest.fn(); + router.navigateError = jest.fn(); //Act globalMethods.callHttpClient(httpArgs).catch((err) => { diff --git a/src/helpers/heritage-integration/navigation-helper.spec.js b/src/helpers/heritage-integration/navigation-helper.spec.js index 752c98fdc..396b4eee1 100644 --- a/src/helpers/heritage-integration/navigation-helper.spec.js +++ b/src/helpers/heritage-integration/navigation-helper.spec.js @@ -1,11 +1,12 @@ import * as navigationHelper from "@/helpers/heritage-integration/navigation-helper"; import * as orderHelper from "@/helpers/heritage-integration/order-helper"; -import { lazyLoadComponent } from "@/router/methods/helpers/lazy-load-component"; +import { lazyLoadComponent } from "@/router/dynamic-routing/component-loader.js"; import { storeActions } from "@/constants/store-actions"; import { storeMutations } from "@/constants/store-mutations"; import { setupMocksForJsFiles, getMockOrderInfo } from "@/helpers/unit-test-helper.js"; -import { externalUrls } from "@/router/constants/externalUrl-values"; +import { externalUrls } from "@/router/router-constants/externalUrl-values"; import { queryStrings } from "@/constants/query-strings"; +import { fmgPageValues } from "@/router/router-constants/fmgPage-values"; import { damageLocationsSelected as glassLocations } from "@/constants/damage-locations-selected"; @@ -16,10 +17,476 @@ const getPageToRouteExistingOrderTo = navigationHelper.getPageToRouteExistingOrd const navigateToHeritageFunnel = navigationHelper.navigateToHeritageFunnel; // Mock Lazy Load -jest.mock("@/router/methods/helpers/lazy-load-component", () => ({ +jest.mock("@/router/dynamic-routing/component-loader.js", () => ({ lazyLoadComponent: jest.fn(), })); +describe("getPageToRouteExistingOrderTo", () => { + describe("Explicit vs. Implicit Routing", () => { + test("Should call explicit routing if `fmgPage` parameter is present in query", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: "schedule", + }, + }; + + mockLazyLoadComponentReturnValues(); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + // If direct, should be "schedule". + // Otherwise, not. + expect(result).toBe("schedule"); + }); + + test("Should call implicit routing if `fmgPage` parameter is NOT present in query", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + mockLazyLoadComponentReturnValues(); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + // If direct, should be "schedule". + // Otherwise, not. + expect(result).not.toBe("schedule"); + }); + }); + + describe("Implicit Routing", () => { + test("should return vehicle", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: false, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.VEHICLE); + }); + + test("should return vehicle-damage", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: false, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.VEHICLE_DAMAGE); + }); + + test("user has YMMS and no vehicle questions > should return estimate", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + const mockExperimentsList = [ + { + universeName: "ConceptFunnel", + settings: { + SuppressVinCapture: false, + }, + }, + ]; + store.commit(storeMutations.UPDATE_EXPERIMENTS, mockExperimentsList); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: false, + [fmgPageValues.MOLDING_QUESTIONS]: false, + [fmgPageValues.VEHICLE_PARTS]: false, + [fmgPageValues.PART_QUESTIONS]: false, + [fmgPageValues.VIN_LOOKUP]: true, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.ESTIMATE); + }); + + test("user has YMMS but no questions or carId > should return estimate", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: false, + [fmgPageValues.MOLDING_QUESTIONS]: false, + [fmgPageValues.VEHICLE_PARTS]: false, + [fmgPageValues.PART_QUESTIONS]: false, + [fmgPageValues.VIN_LOOKUP]: false, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.ESTIMATE); + }); + + test("user has capability questions and molding questions > should return capability questions", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: true, + [fmgPageValues.MOLDING_QUESTIONS]: true, + [fmgPageValues.VEHICLE_PARTS]: false, + [fmgPageValues.PART_QUESTIONS]: false, + [fmgPageValues.VIN_LOOKUP]: false, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.CAPABILITY_QUESTIONS); + }); + + test("user has molding questions and part questions > should return molding questions", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: false, + [fmgPageValues.MOLDING_QUESTIONS]: true, + [fmgPageValues.VEHICLE_PARTS]: false, + [fmgPageValues.PART_QUESTIONS]: true, + [fmgPageValues.VIN_LOOKUP]: false, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.MOLDING_QUESTIONS); + }); + + test("user has vehicle parts questions > should return vehicle-parts", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: false, + [fmgPageValues.MOLDING_QUESTIONS]: false, + [fmgPageValues.VEHICLE_PARTS]: true, + [fmgPageValues.PART_QUESTIONS]: true, + [fmgPageValues.VIN_LOOKUP]: false, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.VEHICLE_PARTS); + }); + + test("user has part questions > should return part-questions", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: false, + [fmgPageValues.MOLDING_QUESTIONS]: false, + [fmgPageValues.VEHICLE_PARTS]: false, + [fmgPageValues.PART_QUESTIONS]: true, + [fmgPageValues.VIN_LOOKUP]: false, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.PART_QUESTIONS); + }); + + test("should return quote, if not verified insurance", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: false, + [fmgPageValues.MOLDING_QUESTIONS]: false, + [fmgPageValues.VEHICLE_PARTS]: false, + [fmgPageValues.PART_QUESTIONS]: true, + [fmgPageValues.VIN_LOOKUP]: false, + [fmgPageValues.QUOTE]: true, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.QUOTE); + }); + + test("should not return pages beyond quote even if prerequisites are met", async () => { + // Arrange + const toRoute = { + query: {}, + }; + + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Mock out the lazy load calls for all components. + mockLazyLoadComponentReturnValues({ + [fmgPageValues.VEHICLE]: true, + [fmgPageValues.VEHICLE_DAMAGE]: true, + [fmgPageValues.ESTIMATE]: true, + [fmgPageValues.CAPABILITY_QUESTIONS]: false, + [fmgPageValues.MOLDING_QUESTIONS]: false, + [fmgPageValues.VEHICLE_PARTS]: false, + [fmgPageValues.PART_QUESTIONS]: true, + [fmgPageValues.VIN_LOOKUP]: false, + [fmgPageValues.QUOTE]: true, + [fmgPageValues.SERVICE_LOCATION]: true, + [fmgPageValues.SCHEDULE]: true, + }); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + //Assert + expect(result).toBe(fmgPageValues.QUOTE); + }); + }); + + describe("Explicit Routing", () => { + test("Returns the value passed in in nominal case", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: "testValue", + }, + }; + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + expect(result).toBe("testValue"); + }); + + describe("Verified users", () => { + test("Replace navigation to `vehicle` with `vehicle-damage`", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: fmgPageValues.VEHICLE, + }, + }; + + store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + expect(result).toBe(fmgPageValues.VEHICLE_DAMAGE); + }); + + describe("Vin-Exempt", () => { + test("Replace navigation to `quote` with `estimate`", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: fmgPageValues.QUOTE, + }, + }; + + store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); + store.commit(storeMutations.UPDATE_IS_REPAIR, true); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + expect(result).toBe(fmgPageValues.ESTIMATE); + }); + }); + + describe("Vin-Required", () => { + test("Replace navigation to `quote` with `vin-lookup`", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: fmgPageValues.QUOTE, + }, + }; + + store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, true); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "666666"); + store.commit(storeMutations.UPDATE_IS_REPAIR, false); + store.commit(storeMutations.UPDATE_MAKE, "acura"); + store.commit(storeMutations.UPDATE_GLASS_TO_REPLACE, [ + { glassLocation: glassLocations.WINDSHIELD }, + ]); + store.commit(storeMutations.UPDATE_VEHICLE_VIN, "abcd1234"); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + expect(result).toBe(fmgPageValues.VIN_LOOKUP); + }); + }); + }); + + describe("Non-verified users", () => { + test("Don't replace navigation to `vehicle` with `vehicle-damage`", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: fmgPageValues.VEHICLE, + }, + }; + + store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, false); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "55555"); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + expect(result).toBe(fmgPageValues.VEHICLE); + }); + + test("Don't replace navigation to `quote` with `estimate` or `vin-lookup`", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: fmgPageValues.QUOTE, + }, + }; + + store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, false); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "55555"); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + expect(result).toBe(fmgPageValues.QUOTE); + }); + + test("Don't replace navigation to `insurance-company` with `estimate` or `vin-lookup`", async () => { + // Arrange + const toRoute = { + query: { + fmgPage: fmgPageValues.INSURANCE_COMPANY, + }, + }; + + store.commit(storeMutations.UPDATE_IS_VERIFIED_INSURANCE, false); + store.commit(storeMutations.UPDATE_REFERRAL_NUMBER, "55555"); + + // Act + const result = await getPageToRouteExistingOrderTo(toRoute); + + // Assert + expect(result).toBe(fmgPageValues.INSURANCE_COMPANY); + }); + }); + }); +}); + describe("navigateToHeritageFunnel", () => { test("should save session", async () => { // Arrange diff --git a/src/helpers/unit-test-helper.js b/src/helpers/unit-test-helper.js index 8f3d04183..540f607b0 100644 --- a/src/helpers/unit-test-helper.js +++ b/src/helpers/unit-test-helper.js @@ -76,9 +76,6 @@ export function getMountOptions(mockData) { mocks: mocks, mixins: mockData.mixins, stubs: { Form }, - computed: { - pageName() { return mockData?.route?.name }, - }, }; const props = mockData.propsData || {}; diff --git a/src/layouts/address-lookup/address-lookup.spec.js b/src/layouts/address-lookup/address-lookup.spec.js index 2e3c766d2..87486280f 100644 --- a/src/layouts/address-lookup/address-lookup.spec.js +++ b/src/layouts/address-lookup/address-lookup.spec.js @@ -7,7 +7,7 @@ import { shallowMount } from "@vue/test-utils"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; import { storeActions } from "@/constants/store-actions"; import { storeMutations } from "@/constants/store-mutations"; -import { navigationScenarios } from "@/router/constants/navigation-scenarios"; +import { navigationScenarios } from "@/router/router-constants/navigation-scenarios"; import store from "@/store"; import { experimentSettings } from "@/constants/experiments"; @@ -308,9 +308,11 @@ describe("address-lookup.vue", () => { await wrapper.vm.forwardButtonAction(); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_MULTIPLE_VEHICLES, undefined, + {}, + {}, carsFound ); }); @@ -397,7 +399,9 @@ describe("address-lookup.vue", () => { // Assert expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.SELECTED_VIN_WITH_MISMATCHED_GLASS, - undefined + undefined, + {}, + { displayVehicleChangeAlert: true } ); }); @@ -713,7 +717,6 @@ function setupMocks({ navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, store: { getters: { diff --git a/src/layouts/estimate/estimate.spec.js b/src/layouts/estimate/estimate.spec.js index 38b4ad41e..74ca7d0bf 100644 --- a/src/layouts/estimate/estimate.spec.js +++ b/src/layouts/estimate/estimate.spec.js @@ -215,7 +215,7 @@ describe("estimate.vue", () => { }); describe("estimate.vue", () => { - test.skip("should call forwardButtonAction if isExternalParameter is true and form is valid", async () => { + test("should call forwardButtonAction if isExternalParameter is true and form is valid", async () => { store.getters = { externalParameterState: { isExternalParameter: true }, externalParameterEstimate: { vinSelection: "decline" }, @@ -263,7 +263,7 @@ function setupMocks({ navigateWithoutSaving: jest.fn(), }, route: { - name: "estimate" + query: {}, }, }, }) { @@ -271,9 +271,7 @@ function setupMocks({ const cmsContent = { groupName: groupName, QuestionText: cmsQuestionText, - VinLookupMethod: { - Answers: cmsAnswers, - }, + Answers: cmsAnswers, FunnelFooterWidget: FunnelFooterWidget, }; const mockMixin = { diff --git a/src/layouts/insurance-company/insurance-company.spec.js b/src/layouts/insurance-company/insurance-company.spec.js index 540866d5f..a35be3b87 100644 --- a/src/layouts/insurance-company/insurance-company.spec.js +++ b/src/layouts/insurance-company/insurance-company.spec.js @@ -26,7 +26,6 @@ jest.mock("@/mixins/base-mixin.js", () => ({ return { navigationScenarios: { CLICKED_BACK: "clicked_back", - CLICKED_PAY_ON_MY_OWN: "clicked_pay_on_my_own" }, }; }, @@ -65,7 +64,7 @@ describe("insurance-company.vue", () => { expect(wrapper.vm.isCashParentAccountNumber()).toBe(false); }); - test("should call navigateWithoutSaving with CLICKED_PAY_ON_MY_OWN when forceCashSelection is true", () => { + test("should call navigateWithoutSaving with { isCashSelected: true } when forceCashSelection is true", () => { const wrapper = shallowMount(InsuranceCompany, { global: { mocks: { @@ -78,8 +77,9 @@ describe("insurance-company.vue", () => { wrapper.vm.backButtonAction(true); expect(mockRouter.navigateWithoutSaving).toHaveBeenCalledWith( - wrapper.vm.navigationScenarios.CLICKED_PAY_ON_MY_OWN, - wrapper.vm.$route + wrapper.vm.navigationScenarios.CLICKED_BACK, + wrapper.vm.$route, + { isCashSelected: true } ); }); diff --git a/src/layouts/molding-questions/molding-questions.spec.js b/src/layouts/molding-questions/molding-questions.spec.js index 8daa6e780..681741c2c 100644 --- a/src/layouts/molding-questions/molding-questions.spec.js +++ b/src/layouts/molding-questions/molding-questions.spec.js @@ -336,7 +336,6 @@ function setupMocks({ navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, store: { getters: store.getters, diff --git a/src/layouts/payment/payment.spec.js b/src/layouts/payment/payment.spec.js index 05d8bb611..05ad6dbc9 100644 --- a/src/layouts/payment/payment.spec.js +++ b/src/layouts/payment/payment.spec.js @@ -599,13 +599,7 @@ describe("payment.vue", () => { function setupMocks({ customMountOptions }) { const mountOptions = getMountOptions({ ...customMountOptions, - route: { name: "payment-method" }, - router: { - navigateWithSaving: jest.fn(), - navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), - navigateAndForceTopLevelNavigation: jest.fn(), - }, + route: { query: { fmgPage: "page-name" }, params: {} }, }); // set all mock stuff diff --git a/src/layouts/quote/quote.spec.js b/src/layouts/quote/quote.spec.js index c162017c1..f132f6de1 100644 --- a/src/layouts/quote/quote.spec.js +++ b/src/layouts/quote/quote.spec.js @@ -651,7 +651,7 @@ describe("quote.vue", () => { //Assert expect(wrapper.vm.isInsuranceSelected).toBe(false); }); - test("should default to cash if offer = cash, despite all other checks pointing to insurance selection", async () => { + test("should default to cash if isCashSelected is true, despite all other checks pointing to insurance selection", async () => { // Also needs no query parameter or previous selection in store to be present //Arrange @@ -695,7 +695,7 @@ describe("quote.vue", () => { //Act await quote.beforeRouteEnter.call( wrapper.vm, - { name: "quote", query: { isInsuranceSelected: true, offer: "cash" } }, + { query: { fmgPage: "quote", isInsuranceSelected: true, isCashSelected: true } }, undefined, (c) => c(wrapper.vm) ); diff --git a/src/layouts/return-user/return-user.spec.js b/src/layouts/return-user/return-user.spec.js index b3d2924ca..dc631ce62 100644 --- a/src/layouts/return-user/return-user.spec.js +++ b/src/layouts/return-user/return-user.spec.js @@ -13,7 +13,7 @@ import router from "@/router"; import navbar from "@/fmg-components/nav-bar/nav-bar"; import { Form } from "vee-validate"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; -import { navigationScenarios } from "@/router/constants/navigation-scenarios"; +import { navigationScenarios } from "@/router/router-constants/navigation-scenarios"; import { settleAllPromises } from "@/helpers/layout-helper"; import { getFunnelCookie } from "@/helpers/heritage-integration/cookie-helper"; import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper"; @@ -257,7 +257,7 @@ describe("return-user.vue", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toBeCalledWith( navigationScenarios.CLICKED_FORWARD, - wrapper.vm.$route.name + wrapper.vm.$route ); }); test("expect functions in startOver to be called", async () => { @@ -272,15 +272,18 @@ describe("return-user.vue", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toBeCalledWith( - navigationScenarios.CLICKED_RESTART, - wrapper.vm.$route.name + navigationScenarios.CLICKED_FORWARD, + wrapper.vm.$route ); + + expect(dispatchStoreActionSpy).toHaveBeenCalledWith(storeActions.RESET_STATE); + expect(deleteFunnelCookie).toHaveBeenCalled(); }); }); }); function setupMocks({ customMountOptions }) { - const route = { name: "return-user" }; + const route = { query: { fmgPage: "return-user" }, params: {} }; baseMixin.methods.ResetExternalParamsAndHideModal = jest.fn(); @@ -291,7 +294,6 @@ function setupMocks({ customMountOptions }) { mountOptions.global.mocks["$store"] = store; mountOptions.global.mocks["$router"] = router; - mountOptions.global.mocks.pageName = route.name; baseMixin.methods.isFormValid = jest.fn().mockReturnValue(true); mountOptions["attachTo"] = document.body; diff --git a/src/layouts/return-user/return-user.vue b/src/layouts/return-user/return-user.vue index 91df48150..6b2a36f7e 100644 --- a/src/layouts/return-user/return-user.vue +++ b/src/layouts/return-user/return-user.vue @@ -91,7 +91,7 @@ export default { async startOver() { this.pushEventToGA( - this.pageName, + this.$route.query[this.queryStrings.FMG_PAGE], this.GaActions.CLICKED, "Start over", true diff --git a/src/layouts/schedule/schedule.spec.js b/src/layouts/schedule/schedule.spec.js index 4b17224db..f3281d34e 100644 --- a/src/layouts/schedule/schedule.spec.js +++ b/src/layouts/schedule/schedule.spec.js @@ -463,13 +463,14 @@ describe("schedule.vue...", () => { expect(testOutput4).toBe("3:30 PM"); }); - test("Clicking back should fire correct navigation", () => { + test("getDisplayTextForMilitaryTime should return the correctly formatted string", () => { // Arrange const { wrapper } = setupMocks({}); wrapper.vm.selectableDatesData = { days: [], }; wrapper.vm.$router.navigateWithoutSaving = jest.fn(); + wrapper.vm.$route = "testRoute"; // Act wrapper.vm.backButtonAction(); @@ -477,7 +478,7 @@ describe("schedule.vue...", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toBeCalledWith( "CLICKED_BACK", - "schedule" + "testRoute" ); }); }); @@ -597,7 +598,6 @@ const mockCmsContent = {}; function setupMocks({ customMountOptions }) { const mountOptions = getMountOptions({ ...customMountOptions, - route: { name: "schedule" }, }); mountOptions.global.mocks["$store"] = store; @@ -613,7 +613,6 @@ function setupMocks({ customMountOptions }) { }, }, ]; - mountOptions.global.mocks.pageName = "schedule"; const wrapper = shallowMount(schedule, mountOptions); diff --git a/src/layouts/service-zip/service-zip.spec.js b/src/layouts/service-zip/service-zip.spec.js index 77c584f7b..5a156422d 100644 --- a/src/layouts/service-zip/service-zip.spec.js +++ b/src/layouts/service-zip/service-zip.spec.js @@ -2,12 +2,12 @@ import serviceZip from "@/layouts/service-zip/service-zip"; // Supporting Files -import { mount, shallowMount } from "@vue/test-utils"; +import { shallowMount } from "@vue/test-utils"; import { getMountOptions } from "@/helpers/unit-test-helper"; import baseMixin from "@/mixins/base-mixin"; import store from "@/store"; import router from "@/router"; -import { navigationScenarios } from "@/router/constants/navigation-scenarios"; +import { navigationScenarios } from "@/router/router-constants/navigation-scenarios"; import { saveSession } from "@/helpers/heritage-integration/order-helper.js"; import vinPagesMixin from "@/mixins/vin-pages-mixin"; import { experimentSettings } from "../../constants/experiments"; @@ -251,6 +251,20 @@ describe("service-zip.vue", () => { expect(wrapper.vm.serviceZipCode).toEqual("11111"); expect(wrapper.vm.emailOrSms).toEqual("builddigitaltest@safelite.com"); }); + + test("Zip in querystring -> pushed to data", () => { + // Arrange + // no changes to store + applyMockStoreDataToGetters(); + + // Act + const wrapper = setupMocks({ + customZipQuery: "11111", + }); + + // Assert + expect(wrapper.vm.serviceZipCode).toEqual("11111"); + }); }); describe("Navigation", () => { @@ -271,7 +285,7 @@ describe("service-zip.vue", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toBeCalledWith( navigationScenarios.CLICKED_BACK_WITH_SKIP_VIN, - wrapper.vm.$route.name + wrapper.vm.$route ); }); @@ -287,7 +301,7 @@ describe("service-zip.vue", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toBeCalledWith( navigationScenarios.CLICKED_BACK, - wrapper.vm.$route.name + wrapper.vm.$route ); }); }); @@ -312,7 +326,7 @@ describe("service-zip.vue", () => { // Assert expect(wrapper.vm.$router.navigateWithSaving).toBeCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_NO_QUESTIONS, - wrapper.vm.$route.name + wrapper.vm.$route ); expect(wrapper.vm.navigateForwardWithSingleCarMatch).not.toBeCalled(); }); @@ -472,7 +486,7 @@ describe("service-zip.vue", () => { }); function setupMocks({ customMountOptions, customZipQuery, customZipDataResponse }) { - const route = { name: "service-zip" }; + const route = { query: { fmgPage: "service-zip" }, params: {} }; if (customZipQuery) { route.query.zipcode = customZipQuery; } @@ -485,7 +499,6 @@ function setupMocks({ customMountOptions, customZipQuery, customZipDataResponse mountOptions.global.mocks["$store"] = store; mountOptions.global.mocks["$router"] = router; - mountOptions.global.mocks.pageName = route.name; mountOptions.mixins = [ { methods: { diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index f6202337c..6a94c240b 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -16,6 +16,7 @@ import { storeActions } from "@/constants/store-actions"; import store from "@/store"; import { validate } from "vee-validate"; import { damageLocationsSelected } from "@/constants/damage-locations-selected.js"; +import { routerParams } from "@/router/router-constants/router-params"; import * as cookieHelper from "@/helpers/heritage-integration/cookie-helper"; // Mock our module for promises. @@ -309,11 +310,11 @@ describe("vehicle-damage.vue", () => { describe("alert", () => { test("when displayVehicleChangeAlert router params is true, the alert: 'vehicleChangeAlert' should be rendered", () => { // Arrange & Act + window.history.pushState({ displayVehicleChangeAlert: "true" }, "", ""); const { wrapper } = setupMocks({ mountOptionsMockData: { route: { - name: "vehicle-damage", - query: { displayVehicleChangeAlert: true }, + state: { displayVehicleChangeAlert: true }, }, }, }); @@ -327,9 +328,8 @@ describe("vehicle-damage.vue", () => { const { wrapper } = setupMocks({ mountOptionsMockData: { route: { - name: "vehicle-damage", - query: { - displayVehicleChangeAlert: false, + state: { + [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: false, }, }, }, @@ -345,9 +345,8 @@ describe("vehicle-damage.vue", () => { const { wrapper } = setupMocks({ mountOptionsMockData: { route: { - name: "vehicle-damage", - query: { - displayVehicleChangeAlert: undefined, + params: { + [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: undefined, }, }, }, @@ -853,8 +852,9 @@ function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData, funnelCo navigateWithSaving: jest.fn(), }, route: { - name: "vehicle-damage", - query: {}, + state: { + [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: false, + }, }, store: { getters: { diff --git a/src/layouts/vehicle-parts/vehicle-parts.spec.js b/src/layouts/vehicle-parts/vehicle-parts.spec.js index 7dd082867..bef6aa032 100644 --- a/src/layouts/vehicle-parts/vehicle-parts.spec.js +++ b/src/layouts/vehicle-parts/vehicle-parts.spec.js @@ -12,7 +12,7 @@ import baseMixin from "@/mixins/base-mixin.js"; import { storeActions } from "@/constants/store-actions"; import store from "@/store"; import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper"; -import { navigationScenarios } from "@/router/constants/navigation-scenarios"; +import { navigationScenarios } from "@/router/router-constants/navigation-scenarios"; // Mock our module for promises. jest.mock("@/helpers/layout-helper.js", () => ({ @@ -84,10 +84,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: store.getters, @@ -122,10 +123,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: store.getters, @@ -159,10 +161,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: store.getters, @@ -202,10 +205,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: { @@ -251,7 +255,7 @@ describe("vehicle-parts.vue", () => { //Assert expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_BACK_WITH_PART_QUESTIONS, - wrapper.vm.$route.name + wrapper.vm.$route ); }); @@ -264,10 +268,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: { @@ -297,7 +302,7 @@ describe("vehicle-parts.vue", () => { //Assert expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS, - wrapper.vm.$route.name + wrapper.vm.$route ); }); @@ -351,10 +356,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: store.getters, @@ -378,7 +384,7 @@ describe("vehicle-parts.vue", () => { await wrapper.vm.forwardButtonAction(); //Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalled(); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled(); }); test("ForwardButtonAction triggers a router.navigateWithSaving change if there are capability questions", async () => { @@ -411,10 +417,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: store.getters, @@ -444,7 +451,7 @@ describe("vehicle-parts.vue", () => { await wrapper.vm.forwardButtonAction(); //Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalled(); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled(); }); test("ForwardButtonAction saves selected parts to store if no molding or capability questions", async () => { @@ -461,10 +468,11 @@ describe("vehicle-parts.vue", () => { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, route: { - name: "vehicle-parts", + query: { + fmgPage: "vehicle-parts", + }, }, store: { getters: store.getters, @@ -536,7 +544,6 @@ function setupMocks({ pageHeaderWidgetHeaderText = {}, mountOptionsMockData = {} wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent; wrapper.vm.$refs.navbar.removeLoader = jest.fn(); wrapper.vm.$refs.loadingModal.showModal = jest.fn(); - wrapper.vm.pageName = "vehicle-parts"; // wrapper.vm.$refs.onSubmit = jest.fn(); // wrapper.vm.$refs.onInvalidSubmit = jest.fn(); diff --git a/src/layouts/vin-lookup/vin-lookup.spec.js b/src/layouts/vin-lookup/vin-lookup.spec.js index 9e6a5d7b5..aca9a8af5 100644 --- a/src/layouts/vin-lookup/vin-lookup.spec.js +++ b/src/layouts/vin-lookup/vin-lookup.spec.js @@ -1,7 +1,7 @@ import { shallowMount } from "@vue/test-utils"; import vinLookup from "./vin-lookup.vue"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; -import { navigationScenarios } from "@/router/constants/navigation-scenarios.js"; +import { navigationScenarios } from "@/router/router-constants/navigation-scenarios.js"; import { settleAllPromises } from "@/helpers/layout-helper.js"; import { experimentSettings } from "@/constants/experiments"; diff --git a/src/mixins/base-mixin.spec.js b/src/mixins/base-mixin.spec.js index 2d95f95b3..2484c0871 100644 --- a/src/mixins/base-mixin.spec.js +++ b/src/mixins/base-mixin.spec.js @@ -1,7 +1,7 @@ import baseMixin from "@/mixins/base-mixin"; import { storeActions } from "@/constants/store-actions.js"; import { storeMutations } from "@/constants/store-mutations.js"; -import { navigationScenarios } from "@/router/constants/navigation-scenarios"; +import { navigationScenarios } from "@/router/router-constants/navigation-scenarios"; import { vehicleCategories } from "@/constants/vehicle-categories.js"; import { queryStrings } from "@/constants/query-strings"; import { dynamicStrings } from "@/constants/dynamic-strings"; diff --git a/src/mixins/vehicle-questions-mixin.spec.js b/src/mixins/vehicle-questions-mixin.spec.js index 558adadd0..56f4425cc 100644 --- a/src/mixins/vehicle-questions-mixin.spec.js +++ b/src/mixins/vehicle-questions-mixin.spec.js @@ -1,11 +1,11 @@ import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin"; import { shallowMount } from "@vue/test-utils"; import { setupMocksForJsFiles, getMountOptions } from "@/helpers/unit-test-helper.js"; -import { routeData } from "@/router/constants/routes"; +import { fmgPageValues } from "@/router/router-constants/fmgPage-values"; import { storeMutations } from "@/constants/store-mutations"; import store from "@/store"; import { storeActions } from "@/constants/store-actions"; -import { navigationScenarios } from "@/router/constants/navigation-scenarios"; +import { navigationScenarios } from "../router/router-constants/navigation-scenarios"; import { getters } from "@/store"; jest.mock("@/helpers/heritage-integration/navigation-helper", () => ({ @@ -290,13 +290,13 @@ describe("vehicle-questions-mixin", () => { describe("currentPageComesBeforePage", () => { const testCases = [ - [routeData.PART_QUESTIONS, routeData.VEHICLE_PARTS, true], - [routeData.VEHICLE_PARTS, routeData.VEHICLE_PARTS, false], - [routeData.QUOTE, routeData.VEHICLE_PARTS, false], - [routeData.QUOTE, routeData.QUOTE, false], - [routeData.VEHICLE_PARTS, routeData.PART_QUESTIONS, false], - [routeData.PART_QUESTIONS, routeData.CAPABILITY_QUESTIONS, true], - [routeData.MOLDING_QUESTIONS, routeData.CAPABILITY_QUESTIONS, true], + [fmgPageValues.PART_QUESTIONS, fmgPageValues.VEHICLE_PARTS, true], + [fmgPageValues.VEHICLE_PARTS, fmgPageValues.VEHICLE_PARTS, false], + [fmgPageValues.QUOTE, fmgPageValues.VEHICLE_PARTS, false], + [fmgPageValues.QUOTE, fmgPageValues.QUOTE, false], + [fmgPageValues.VEHICLE_PARTS, fmgPageValues.PART_QUESTIONS, false], + [fmgPageValues.PART_QUESTIONS, fmgPageValues.CAPABILITY_QUESTIONS, true], + [fmgPageValues.MOLDING_QUESTIONS, fmgPageValues.CAPABILITY_QUESTIONS, true], ]; test.each(testCases)( "%s comes before %s is %s", @@ -305,7 +305,7 @@ describe("vehicle-questions-mixin", () => { const { wrapper } = setupMocks({}); // Act - const result = wrapper.vm.currentPageComesBeforePage(currentPage.name, nextPage.name); + const result = wrapper.vm.currentPageComesBeforePage(currentPage, nextPage); // Assert expect(result).toEqual(expectedResult); @@ -315,20 +315,20 @@ describe("vehicle-questions-mixin", () => { describe("currentPageComesAfterPage", () => { const testCases = [ - [routeData.PART_QUESTIONS, routeData.VEHICLE_PARTS, false], - [routeData.VEHICLE_PARTS, routeData.VEHICLE_PARTS, false], - [routeData.QUOTE, routeData.VEHICLE_PARTS, true], - [routeData.QUOTE, routeData.QUOTE, false], - [routeData.VEHICLE_PARTS, routeData.PART_QUESTIONS, true], - [routeData.PART_QUESTIONS, routeData.CAPABILITY_QUESTIONS, false], - [routeData.MOLDING_QUESTIONS, routeData.CAPABILITY_QUESTIONS, false], + [fmgPageValues.PART_QUESTIONS, fmgPageValues.VEHICLE_PARTS, false], + [fmgPageValues.VEHICLE_PARTS, fmgPageValues.VEHICLE_PARTS, false], + [fmgPageValues.QUOTE, fmgPageValues.VEHICLE_PARTS, true], + [fmgPageValues.QUOTE, fmgPageValues.QUOTE, false], + [fmgPageValues.VEHICLE_PARTS, fmgPageValues.PART_QUESTIONS, true], + [fmgPageValues.PART_QUESTIONS, fmgPageValues.CAPABILITY_QUESTIONS, false], + [fmgPageValues.MOLDING_QUESTIONS, fmgPageValues.CAPABILITY_QUESTIONS, false], ]; test.each(testCases)("%s comes after %s is %s", (currentPage, nextPage, expectedResult) => { // Arrange const { wrapper } = setupMocks({}); // Act - const result = wrapper.vm.currentPageComesAfterPage(currentPage.name, nextPage.name); + const result = wrapper.vm.currentPageComesAfterPage(currentPage, nextPage); // Assert expect(result).toEqual(expectedResult); @@ -1321,10 +1321,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_PART_QUESTIONS, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -1434,10 +1436,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_PART_QUESTIONS, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -1539,10 +1543,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_PART_QUESTIONS, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -1692,10 +1698,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_PART_QUESTIONS, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -1738,10 +1746,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_MULTIPLE_PARTS_TO_CHOOSE, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -1848,10 +1858,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_MULTIPLE_PARTS_TO_CHOOSE, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -2024,10 +2036,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_MULTIPLE_PARTS_TO_CHOOSE, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -2081,10 +2095,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_MOLDING_QUESTIONS, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -2121,10 +2137,12 @@ describe("vehicle-questions-mixin", () => { await wrapper.vm.navigateForward(partsOrQuestions); // Assert - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledTimes(1); - expect(wrapper.vm.$router.navigateWithPageData).toHaveBeenCalledWith( + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1); + expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_FORWARD_WITH_CAPABILITY_QUESTIONS, - wrapper.vm.$route.name, + wrapper.vm.$route, + {}, + {}, { partsOrQuestions } ); }); @@ -2297,7 +2315,7 @@ describe("vehicle-questions-mixin", () => { test("current page is quote, there are no questions, and we have their vin => go to vin-lookup", async () => { // Arrange - const { wrapper } = setupMocks({ fmgPage: routeData.QUOTE.name, hasVin: true }); + const { wrapper } = setupMocks({ fmgPage: fmgPageValues.QUOTE, hasVin: true }); // Act store.dispatch = jest.fn(() => {}); @@ -2306,13 +2324,13 @@ describe("vehicle-questions-mixin", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS, - routeData.QUOTE.name + { query: { fmgPage: fmgPageValues.QUOTE } } ); }); test("current page is quote and there are capability questions => go to capability questions", async () => { // Arrange - const { wrapper } = setupMocks({ fmgPage: routeData.QUOTE.name }); + const { wrapper } = setupMocks({ fmgPage: fmgPageValues.QUOTE }); wrapper.vm.hasCapabilityQuestions = jest.fn().mockReturnValue(true); // Act @@ -2322,13 +2340,13 @@ describe("vehicle-questions-mixin", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_BACK_WITH_CAPABILITY_QUESTIONS, - routeData.QUOTE.name + { query: { fmgPage: fmgPageValues.QUOTE } } ); }); test("current page is quote and there are part questions and molding questions => go to molding questions", async () => { // Arrange - const { wrapper } = setupMocks({ fmgPage: routeData.QUOTE.name }); + const { wrapper } = setupMocks({ fmgPage: fmgPageValues.QUOTE }); wrapper.vm.hasPartQuestions = jest.fn().mockReturnValue(true); wrapper.vm.hasChildPartQuestions = jest.fn().mockReturnValue(true); @@ -2338,13 +2356,13 @@ describe("vehicle-questions-mixin", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_BACK_WITH_MOLDING_QUESTIONS, - routeData.QUOTE.name + { query: { fmgPage: fmgPageValues.QUOTE } } ); }); test("current page is molding questions and there are part questions, multiple parts to choose, and capability questions => go to vehicle-parts", async () => { // Arrange - const { wrapper } = setupMocks({ fmgPage: routeData.MOLDING_QUESTIONS.name }); + const { wrapper } = setupMocks({ fmgPage: fmgPageValues.MOLDING_QUESTIONS }); wrapper.vm.hasPartQuestions = jest.fn().mockReturnValue(true); wrapper.vm.hasGlassLocationWithMultipleParts = jest.fn().mockReturnValue(true); wrapper.vm.hasChildPartQuestions = jest.fn().mockReturnValue(true); @@ -2357,13 +2375,13 @@ describe("vehicle-questions-mixin", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_BACK_WITH_MULTIPLE_PARTS_TO_CHOOSE, - routeData.MOLDING_QUESTIONS.name + { query: { fmgPage: fmgPageValues.MOLDING_QUESTIONS } } ); }); test("current page is molding questions and there are part questions and capability questions => go to part-questions", async () => { // Arrange - const { wrapper } = setupMocks({ fmgPage: routeData.MOLDING_QUESTIONS.name }); + const { wrapper } = setupMocks({ fmgPage: fmgPageValues.MOLDING_QUESTIONS }); wrapper.vm.hasPartQuestions = jest.fn().mockReturnValue(true); wrapper.vm.hasGlassLocationWithMultipleParts = jest.fn().mockReturnValue(false); wrapper.vm.hasChildPartQuestions = jest.fn().mockReturnValue(true); @@ -2376,13 +2394,13 @@ describe("vehicle-questions-mixin", () => { // Assert expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith( navigationScenarios.CLICKED_BACK_WITH_PART_QUESTIONS, - routeData.MOLDING_QUESTIONS.name + { query: { fmgPage: fmgPageValues.MOLDING_QUESTIONS } } ); }); }); }); -function setupMocks({ fmgPage = routeData.VIN_LOOKUP.name, hasVin, carId }) { +function setupMocks({ fmgPage = fmgPageValues.VIN_LOOKUP, hasVin, carId }) { const baseMixin = setupMocksForJsFiles({ actionList: [ { @@ -2405,7 +2423,6 @@ function setupMocks({ fmgPage = routeData.VIN_LOOKUP.name, hasVin, carId }) { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), - navigateWithPageData: jest.fn(), }, store: { commit: jest.fn(), @@ -2419,7 +2436,9 @@ function setupMocks({ fmgPage = routeData.VIN_LOOKUP.name, hasVin, carId }) { }, }, route: { - name: fmgPage + query: { + fmgPage, + }, }, }); diff --git a/src/mixins/vin-pages-mixin.spec.js b/src/mixins/vin-pages-mixin.spec.js index d9ff6f874..ce9c267f9 100644 --- a/src/mixins/vin-pages-mixin.spec.js +++ b/src/mixins/vin-pages-mixin.spec.js @@ -58,9 +58,6 @@ function setupMocks({ partsOrQuestions = [] }) { }, }, }, - route: { - name: "vin-lookup", - }, }); const mockVinComponent = { diff --git a/src/store/store.spec.js b/src/store/store.spec.js index 68c8f6761..69e2feb66 100644 --- a/src/store/store.spec.js +++ b/src/store/store.spec.js @@ -3,7 +3,7 @@ import { mutations, state, actions, getters } from "@/store"; import { storeMutations } from "@/constants/store-mutations"; import { storeActions } from "@/constants/store-actions"; import { experimentTriggers } from "@/constants/experiments"; -import { routeData } from "@/router/constants/routes"; +import { fmgPageValues } from "@/router/router-constants/fmgPage-values"; import { AppointmentTypeStrings } from "@/constants/schedule-constants"; // Mock global method @@ -1862,15 +1862,15 @@ describe("Actions", () => { null ); expect(context.commit).toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.VEHICLE_PARTS.name, + page: fmgPageValues.VEHICLE_PARTS, data: null, }); expect(context.commit).toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: null, }); expect(context.commit).toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: null, }); } else { @@ -1884,15 +1884,15 @@ describe("Actions", () => { null ); expect(context.commit).not.toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.VEHICLE_PARTS.name, + page: fmgPageValues.VEHICLE_PARTS, data: null, }); expect(context.commit).not.toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: null, }); expect(context.commit).not.toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: null, }); } @@ -2040,11 +2040,11 @@ describe("Actions", () => { null ); expect(context.commit).toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: null, }); expect(context.commit).toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: null, }); } else { @@ -2058,11 +2058,11 @@ describe("Actions", () => { null ); expect(context.commit).not.toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: null, }); expect(context.commit).not.toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: null, }); } @@ -2085,12 +2085,12 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: previouslySelectedParts, }); mutations.updatePageData(context, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: previouslySelectedParts, }); @@ -2134,7 +2134,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: previouslySelectedParts, }); @@ -2187,7 +2187,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: previouslySelectedParts, }); @@ -2232,7 +2232,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: previouslySelectedParts, }); @@ -2285,7 +2285,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: previouslySelectedParts, }); @@ -2330,7 +2330,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: previouslySelectedParts, }); @@ -2383,7 +2383,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: previouslySelectedParts, }); @@ -2428,7 +2428,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.MOLDING_QUESTIONS.name, + page: fmgPageValues.MOLDING_QUESTIONS, data: previouslySelectedParts, }); @@ -2481,7 +2481,7 @@ describe("Actions", () => { ]; mutations.updatePageData(context, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: previouslySelectedParts, }); @@ -2522,7 +2522,7 @@ describe("Actions", () => { null ); expect(context.commit).toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: null, }); } else { @@ -2532,7 +2532,7 @@ describe("Actions", () => { null ); expect(context.commit).not.toBeCalledWith(storeMutations.UPDATE_PAGE_DATA, { - page: routeData.CAPABILITY_QUESTIONS.name, + page: fmgPageValues.CAPABILITY_QUESTIONS, data: null, }); } From 7b73313513094ff5921570fc14d5106198db0aa7 Mon Sep 17 00:00:00 2001 From: Chloe Herd Date: Tue, 13 May 2025 14:35:48 -0400 Subject: [PATCH 10/13] Revert "Unplug Legacy Router" This reverts commit 572f8de5bb8298225ff79e4212406e3297017216. --- src/constants/application-config.js | 1 - src/digital-components/modal/modal.vue | 8 +- src/fmg-components/nav-bar/nav-bar.vue | 9 +- src/global-methods.js | 2 +- .../heritage-integration/navigation-helper.js | 102 ++ src/helpers/unit-test-helper.js | 6 +- src/layouts/address-lookup/address-lookup.vue | 5 +- .../address-vehicles/address-vehicles.vue | 7 +- .../capability-questions.vue | 6 +- src/layouts/estimate/estimate.vue | 2 +- .../license-plate-lookup.vue | 7 +- .../molding-questions/molding-questions.vue | 6 +- src/layouts/part-questions/part-questions.vue | 6 +- src/layouts/payment-method/payment-method.vue | 3 +- .../payment-pia-return/payment-pia-return.vue | 1 + src/layouts/payment/payment.vue | 8 +- src/layouts/quote/quote.vue | 8 +- src/layouts/service-zip/service-zip.vue | 6 +- src/layouts/vehicle-damage/vehicle-damage.vue | 1 + src/layouts/vehicle-parts/vehicle-parts.vue | 6 +- src/layouts/vehicle/vehicle.vue | 2 +- src/layouts/vin-lookup/vin-lookup.vue | 9 +- src/main.js | 2 +- src/mixins/analytics-mixin.js | 5 +- src/mixins/base-mixin.js | 6 +- src/mixins/vehicle-questions-mixin.js | 38 +- .../constants/auto-route-table.js | 0 .../constants/externalUrl-values.js | 0 .../constants/navigation-scenarios.js | 0 .../{ => a-rewrite}/constants/route-prefix.js | 0 .../{ => a-rewrite}/constants/routes.js | 0 .../constants/routing-table.js | 6 +- src/router/a-rewrite/index.js | 38 + .../{ => a-rewrite}/methods/after-each.js | 0 .../{ => a-rewrite}/methods/before-each.js | 10 +- src/router/{ => a-rewrite}/methods/error.js | 4 +- .../{ => a-rewrite}/methods/get-route.js | 2 +- .../methods/helpers/build-manual-url.js | 2 +- .../methods/helpers/consume-referral-info.js | 0 .../methods/helpers/create-route.js | 4 +- .../methods/helpers/get-destination.js | 2 +- .../helpers/initialize-from-querystrings.js | 0 .../methods/helpers/lazy-load-component.js | 0 .../methods/helpers/querystring-stash.js | 0 .../helpers/requires-verified-redirect.js | 0 .../methods/helpers/run-experiments.js | 0 .../methods/helpers/save-page-data.js | 0 .../methods/navigate-external.js | 0 .../{ => a-rewrite}/methods/navigate.js | 16 +- .../methods/page-prerequisites.js | 2 +- .../methods/route-logic/auto-route.js | 6 +- .../methods/route-logic/error.js | 4 +- .../methods/route-logic/heritage.js | 0 .../methods/route-logic/insurance-company.js | 4 +- .../methods/route-logic/landing.js | 10 +- .../methods/route-logic/load-session.js | 2 +- .../methods/route-logic/quote.js | 4 +- .../methods/route-logic/restart.js | 4 +- .../methods/route-logic/vehicle.js | 4 +- src/router/{ => a-rewrite}/methods/routes.js | 22 +- .../dynamic-routing/component-loader.js | 3 + src/router/index.js | 947 +++++++++++++++++- src/router/methods/send-to-return-user.js | 11 - .../router-constants/externalUrl-values.js | 6 + src/router/router-constants/fmgPage-values.js | 32 + .../router-constants/navigation-scenarios.js | 59 ++ src/router/router-constants/router-params.js | 6 + src/router/router-constants/routing-table.js | 546 ++++++++++ src/store/index.js | 38 +- 69 files changed, 1885 insertions(+), 171 deletions(-) rename src/router/{ => a-rewrite}/constants/auto-route-table.js (100%) rename src/router/{ => a-rewrite}/constants/externalUrl-values.js (100%) rename src/router/{ => a-rewrite}/constants/navigation-scenarios.js (100%) rename src/router/{ => a-rewrite}/constants/route-prefix.js (100%) rename src/router/{ => a-rewrite}/constants/routes.js (100%) rename src/router/{ => a-rewrite}/constants/routing-table.js (99%) create mode 100644 src/router/a-rewrite/index.js rename src/router/{ => a-rewrite}/methods/after-each.js (100%) rename src/router/{ => a-rewrite}/methods/before-each.js (86%) rename src/router/{ => a-rewrite}/methods/error.js (78%) rename src/router/{ => a-rewrite}/methods/get-route.js (71%) rename src/router/{ => a-rewrite}/methods/helpers/build-manual-url.js (88%) rename src/router/{ => a-rewrite}/methods/helpers/consume-referral-info.js (100%) rename src/router/{ => a-rewrite}/methods/helpers/create-route.js (87%) rename src/router/{ => a-rewrite}/methods/helpers/get-destination.js (85%) rename src/router/{ => a-rewrite}/methods/helpers/initialize-from-querystrings.js (100%) rename src/router/{ => a-rewrite}/methods/helpers/lazy-load-component.js (100%) rename src/router/{ => a-rewrite}/methods/helpers/querystring-stash.js (100%) rename src/router/{ => a-rewrite}/methods/helpers/requires-verified-redirect.js (100%) rename src/router/{ => a-rewrite}/methods/helpers/run-experiments.js (100%) rename src/router/{ => a-rewrite}/methods/helpers/save-page-data.js (100%) rename src/router/{ => a-rewrite}/methods/navigate-external.js (100%) rename src/router/{ => a-rewrite}/methods/navigate.js (79%) rename src/router/{ => a-rewrite}/methods/page-prerequisites.js (87%) rename src/router/{ => a-rewrite}/methods/route-logic/auto-route.js (65%) rename src/router/{ => a-rewrite}/methods/route-logic/error.js (92%) rename src/router/{ => a-rewrite}/methods/route-logic/heritage.js (100%) rename src/router/{ => a-rewrite}/methods/route-logic/insurance-company.js (54%) rename src/router/{ => a-rewrite}/methods/route-logic/landing.js (69%) rename src/router/{ => a-rewrite}/methods/route-logic/load-session.js (82%) rename src/router/{ => a-rewrite}/methods/route-logic/quote.js (75%) rename src/router/{ => a-rewrite}/methods/route-logic/restart.js (84%) rename src/router/{ => a-rewrite}/methods/route-logic/vehicle.js (81%) rename src/router/{ => a-rewrite}/methods/routes.js (60%) create mode 100644 src/router/dynamic-routing/component-loader.js delete mode 100644 src/router/methods/send-to-return-user.js create mode 100644 src/router/router-constants/externalUrl-values.js create mode 100644 src/router/router-constants/fmgPage-values.js create mode 100644 src/router/router-constants/navigation-scenarios.js create mode 100644 src/router/router-constants/router-params.js create mode 100644 src/router/router-constants/routing-table.js diff --git a/src/constants/application-config.js b/src/constants/application-config.js index 788de3fd7..a03e5f010 100644 --- a/src/constants/application-config.js +++ b/src/constants/application-config.js @@ -6,7 +6,6 @@ const applicationConfig = { COOKIE_PATH: "/", CURRENT_ENVIRONMENT: process.env.VUE_APP_CURRENT_ENVIRONMENT, // "Localhost", "Dev", "QA", and "Prod" HERITAGE_FUNNEL: process.env.VUE_APP_HERITAGE_FUNNEL, - SAFELITE_HOP: process.env.VUE_APP_SAFELITE_HOP, APPLICATION_NAME: "FixMyGlass", ANALYTICS_APPLICATION_NAME: "FixMyGlassNextGen", APPLICATION_ABBREVIATION: "fmg", diff --git a/src/digital-components/modal/modal.vue b/src/digital-components/modal/modal.vue index 4cc75f701..7b89b7e57 100644 --- a/src/digital-components/modal/modal.vue +++ b/src/digital-components/modal/modal.vue @@ -46,7 +46,9 @@