Merge pull request #809 from Safelite/feature/CSR-748-quote
Feature/csr 748 quote
This commit is contained in:
commit
2ba900e6d0
25 changed files with 249 additions and 135 deletions
|
|
@ -45,6 +45,7 @@ export default {
|
|||
};
|
||||
},
|
||||
mounted() {
|
||||
// Need this here and in the watch for vehicle-parts, unless there'a better way
|
||||
if (this.isChecked) {
|
||||
this.handleChange(this.modelValue);
|
||||
}
|
||||
|
|
@ -188,6 +189,13 @@ export default {
|
|||
fieldOptions, // only need to expose this for unit test purposes
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
isChecked(isChecked) {
|
||||
if (isChecked) {
|
||||
this.handleChange(this.modelValue);
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,10 @@
|
|||
data-bs-target="#footerModal"
|
||||
data-bs-dismiss="modal" />
|
||||
</div>
|
||||
<!-- TODO KO DELETE FOR QUOTE MVP -->
|
||||
<div class="col-auto">
|
||||
<button @click="$emit('tempButtonClicked')">Heritage</button>
|
||||
</div>
|
||||
<div v-if="!isBackButtonHidden" class="col-auto link-col py-1 text-break">
|
||||
<textLink
|
||||
linkType="navigation"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<template>
|
||||
<div :class="`page-container-grouped-styles questions-page`">
|
||||
<loadingModal ref="loadingModal" />
|
||||
<funnelHeader cmsWidgetName="FunnelHeaderWidget" />
|
||||
<vehicleBanner cmsWidgetName="VehicleBannerWidget" :displayGenericVehicleImage="false" />
|
||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||
|
|
@ -41,7 +40,6 @@ import alert from "@/ux-components/alert/alert";
|
|||
import questionChain from "@/common-components/question-chain/question-chain";
|
||||
import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-header";
|
||||
import funnelFooter from "@/common-components/funnel-footer/funnel-footer";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
|
||||
export default {
|
||||
name: "questions-page",
|
||||
|
|
@ -77,9 +75,6 @@ export default {
|
|||
handleBackButtonAction() {
|
||||
this.$emit("backButtonAction");
|
||||
},
|
||||
showLoadingModal() {
|
||||
this.$refs.loadingModal.showModal();
|
||||
},
|
||||
},
|
||||
components: {
|
||||
funnelHeader,
|
||||
|
|
@ -88,7 +83,6 @@ export default {
|
|||
questionChain,
|
||||
funnelSubHeader,
|
||||
funnelFooter,
|
||||
loadingModal,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -724,7 +724,6 @@ function setupMocks({
|
|||
wrapper.vm.setCmsContent = jest.fn();
|
||||
wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn();
|
||||
wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn();
|
||||
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
|
||||
|
||||
return { wrapper };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
v-slot="{ meta }"
|
||||
autocomplete="off">
|
||||
<div class="page-container-grouped-styles">
|
||||
<loadingModal ref="loadingModal" />
|
||||
<funnelHeader cmsWidgetName="FunnelHeaderWidget" ref="funnelHeader" />
|
||||
<vehicleBanner
|
||||
cmsWidgetName="VehicleBannerWidget"
|
||||
|
|
@ -89,7 +88,6 @@ import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-he
|
|||
import customerQuestions from "@/layouts/address-lookup/customer-questions/customer-questions";
|
||||
import alert from "@/ux-components/alert/alert";
|
||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
|
||||
import { Form, defineRule } from "vee-validate";
|
||||
import { required, regex } from "@/helpers/validation-rules";
|
||||
|
|
@ -458,7 +456,6 @@ export default {
|
|||
customerQuestions,
|
||||
textboxQuestion,
|
||||
alert,
|
||||
loadingModal,
|
||||
Form,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -149,7 +149,6 @@ describe("addressVehicles.vue", () => {
|
|||
// Arrange
|
||||
const { wrapper } = setupMocks({});
|
||||
wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn();
|
||||
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
|
||||
navigateToHeritage.navigateToHeritageFunnel = jest.fn();
|
||||
|
||||
// Act
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<template>
|
||||
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
|
||||
<div class="page-container-grouped-styles">
|
||||
<loadingModal ref="loadingModal" />
|
||||
<funnelHeader cmsWidgetName="FunnelHeaderWidget" />
|
||||
<vehicleBanner
|
||||
cmsWidgetName="VehicleBannerWidget"
|
||||
|
|
@ -53,7 +52,6 @@ import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
|||
import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-header";
|
||||
import alert from "@/ux-components/alert/alert";
|
||||
import addressVehiclesQuestion from "@/layouts/address-vehicles/address-vehicles-question/address-vehicles-question";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
|
||||
// Supporting files
|
||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||
|
|
@ -239,7 +237,6 @@ export default {
|
|||
alert,
|
||||
funnelFooter,
|
||||
addressVehiclesQuestion,
|
||||
loadingModal,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -161,7 +161,9 @@ export default {
|
|||
).parts = partFromCapabilityQuestionAnswer;
|
||||
}
|
||||
|
||||
this.navigateForward(partsOrQuestions);
|
||||
// this.navigateForward(partsOrQuestions);
|
||||
// TODO KO delete after quote MVP
|
||||
this.navigateForward(partsOrQuestions, null, this.shouldGoToHeritageQuote);
|
||||
},
|
||||
},
|
||||
components: {
|
||||
|
|
|
|||
|
|
@ -39,32 +39,59 @@ describe("estimate.vue", () => {
|
|||
]);
|
||||
});
|
||||
|
||||
test("After selecting provide my home address on ForwardButtonAction triggers a router.navigateWithSaving", async () => {
|
||||
//Arrange
|
||||
const { wrapper } = setupMocks({});
|
||||
await wrapper.setData({
|
||||
selectedVinLookupMethod: vinLookupMethodSelections.HOMEADDRESS,
|
||||
describe("move forward", () => {
|
||||
test("After selecting provide my home address on ForwardButtonAction triggers a router.navigateWithSaving", async () => {
|
||||
//Arrange
|
||||
const { wrapper } = setupMocks({});
|
||||
await wrapper.setData({
|
||||
selectedVinLookupMethod: vinLookupMethodSelections.HOMEADDRESS,
|
||||
});
|
||||
|
||||
//Act
|
||||
wrapper.vm.forwardButtonAction();
|
||||
|
||||
//Assert
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
//Act
|
||||
wrapper.vm.forwardButtonAction();
|
||||
test("After selecting provide my manual vin on ForwardButtonAction triggers a router.navigateWithSaving", async () => {
|
||||
//Arrange
|
||||
const { wrapper } = setupMocks({});
|
||||
await wrapper.setData({
|
||||
selectedVinLookupMethod: vinLookupMethodSelections.MANUALVIN,
|
||||
});
|
||||
|
||||
//Assert
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled();
|
||||
});
|
||||
//Act
|
||||
await wrapper.vm.forwardButtonAction();
|
||||
|
||||
test("After selecting provide my manual vin on ForwardButtonAction triggers a router.navigateWithSaving", async () => {
|
||||
//Arrange
|
||||
const { wrapper } = setupMocks({});
|
||||
await wrapper.setData({
|
||||
selectedVinLookupMethod: vinLookupMethodSelections.MANUALVIN,
|
||||
//Assert
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
//Act
|
||||
await wrapper.vm.forwardButtonAction();
|
||||
test("Provide my license plate on ForwardButtonAction triggers a router.navigateWithSaving", async () => {
|
||||
//Arrange
|
||||
const { wrapper } = setupMocks({});
|
||||
await wrapper.setData({
|
||||
selectedVinLookupMethod: vinLookupMethodSelections.LICENSEPLATE,
|
||||
});
|
||||
|
||||
//Assert
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled();
|
||||
//Act
|
||||
wrapper.vm.forwardButtonAction();
|
||||
|
||||
//Assert
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
// TODO KO
|
||||
describe("isRepair", () => {
|
||||
test.todo("is repair and zip codes are valid/serviceable => go to quote page");
|
||||
test.todo(
|
||||
"is repair and zip codes are valid but not serviceable => show correct alert, remove loader"
|
||||
);
|
||||
test.todo(
|
||||
"is repair and zip codes are not valid/serviceable => show correct alert, remove loader"
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test("BackButtonAction triggers a router.navigateWithoutSaving change", async () => {
|
||||
|
|
@ -85,20 +112,6 @@ describe("estimate.vue", () => {
|
|||
expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("Provide my license plate on ForwardButtonAction triggers a router.navigateWithSaving", async () => {
|
||||
//Arrange
|
||||
const { wrapper } = setupMocks({});
|
||||
await wrapper.setData({
|
||||
selectedVinLookupMethod: vinLookupMethodSelections.LICENSEPLATE,
|
||||
});
|
||||
|
||||
//Act
|
||||
wrapper.vm.forwardButtonAction();
|
||||
|
||||
//Assert
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
describe("arePagePrerequisitesValid", () => {
|
||||
beforeEach(() => {
|
||||
store.commit(storeMutations.UPDATE_IS_REPAIR, false);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<template>
|
||||
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
|
||||
<div class="page-container-grouped-styles">
|
||||
<loadingModal ref="loadingModal" />
|
||||
<funnelHeader cmsWidgetName="FunnelHeaderWidget" />
|
||||
<vehicleBanner cmsWidgetName="VehicleBannerWidget" />
|
||||
<funnelSubHeader cmsWidgetName="FunnelSubHeaderWidget" />
|
||||
|
|
@ -91,7 +90,6 @@ import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-he
|
|||
import buttonQuestion from "@/common-components/button-question/button-question";
|
||||
import alert from "@/ux-components/alert/alert";
|
||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
import textBlock from "@/common-components/text-block/text-block";
|
||||
|
||||
//Supporting Files
|
||||
|
|
@ -197,8 +195,10 @@ export default {
|
|||
}
|
||||
this.displayNonServiceableZipAlert = false;
|
||||
|
||||
this.$refs.loadingModal.showModal();
|
||||
navigateToHeritageFunnel();
|
||||
return this.$router.navigateWithSaving(
|
||||
this.navigationScenarios.HAS_NO_QUESTIONS,
|
||||
this.$route
|
||||
);
|
||||
}
|
||||
|
||||
if (this.selectedVinLookupMethod === vinLookupMethodSelections.MANUALVIN) {
|
||||
|
|
@ -256,7 +256,6 @@ export default {
|
|||
Form,
|
||||
alert,
|
||||
textboxQuestion,
|
||||
loadingModal,
|
||||
textBlock,
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -612,7 +612,6 @@ function setupMocks({
|
|||
wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => "");
|
||||
wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn();
|
||||
wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn();
|
||||
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
|
||||
|
||||
return { wrapper, apiPromise };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<template>
|
||||
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
|
||||
<div class="page-container-grouped-styles">
|
||||
<loadingModal ref="loadingModal" />
|
||||
<funnelHeader cmsWidgetName="FunnelHeaderWidget" />
|
||||
<vehicleBanner
|
||||
cmsWidgetName="VehicleBannerWidget"
|
||||
|
|
@ -98,7 +97,6 @@ import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
|||
import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-header";
|
||||
import alert from "@/ux-components/alert/alert";
|
||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
import textBlock from "@/common-components/text-block/text-block";
|
||||
|
||||
// Supporting files
|
||||
|
|
@ -390,7 +388,6 @@ export default {
|
|||
funnelSubHeader,
|
||||
textboxQuestion,
|
||||
alert,
|
||||
loadingModal,
|
||||
textBlock,
|
||||
Form,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -146,7 +146,9 @@ export default {
|
|||
];
|
||||
}
|
||||
|
||||
this.navigateForward(partsOrQuestions);
|
||||
// this.navigateForward(partsOrQuestions);
|
||||
// TODO KO delete after quote MVP
|
||||
this.navigateForward(partsOrQuestions, null, this.shouldGoToHeritageQuote);
|
||||
},
|
||||
},
|
||||
components: {
|
||||
|
|
|
|||
|
|
@ -129,17 +129,14 @@ export default {
|
|||
);
|
||||
|
||||
// call API parts method
|
||||
const partsLookup = await this.dispatchStoreAction(this.storeActions.GET_PARTS).catch(
|
||||
() => {
|
||||
return this.$refs.funnelFooter.removeLoader();
|
||||
}
|
||||
);
|
||||
const partsLookup = await this.dispatchStoreAction(this.storeActions.GET_PARTS);
|
||||
|
||||
const glassPartsForStore = partsLookup.data.glassPieceParts;
|
||||
|
||||
debugger; // eslint-disable-line no-debugger
|
||||
// this.navigateForward(glassPartsForStore);
|
||||
|
||||
this.navigateForward(glassPartsForStore);
|
||||
// TODO KO delete for quote mvp
|
||||
this.navigateForward(glassPartsForStore, null, this.shouldGoToHeritageQuote);
|
||||
},
|
||||
},
|
||||
components: {
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ import servicePackageQuestion from "./service-package-question/service-package-q
|
|||
import textBlock from "@/common-components/text-block/text-block";
|
||||
import modal from "@/common-components/modal/modal";
|
||||
import baseMixin from "@/mixins/base-mixin.js";
|
||||
import vehicleQuestionsMixin from "../../mixins/vehicle-questions-mixin";
|
||||
|
||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||
import { Form } from "vee-validate";
|
||||
|
|
@ -155,6 +156,9 @@ export default {
|
|||
: null;
|
||||
}
|
||||
},
|
||||
backButtonAction() {
|
||||
vehicleQuestionsMixin.methods.backButtonAction(this);
|
||||
},
|
||||
},
|
||||
components: {
|
||||
funnelHeader,
|
||||
|
|
|
|||
|
|
@ -232,6 +232,9 @@ describe("vehicle-parts.vue", () => {
|
|||
lineItems: {
|
||||
glassParts: null,
|
||||
},
|
||||
vehicle: {
|
||||
vin: "MY_VIN",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -275,6 +278,9 @@ describe("vehicle-parts.vue", () => {
|
|||
lineItems: {
|
||||
glassParts: null,
|
||||
},
|
||||
vehicle: {
|
||||
vin: "MY_VIN",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
|
@ -292,7 +298,7 @@ describe("vehicle-parts.vue", () => {
|
|||
|
||||
//Assert
|
||||
expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith(
|
||||
navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS,
|
||||
navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS,
|
||||
wrapper.vm.$route
|
||||
);
|
||||
});
|
||||
|
|
@ -467,12 +473,10 @@ describe("vehicle-parts.vue", () => {
|
|||
getters: store.getters,
|
||||
commit: store.commit,
|
||||
},
|
||||
navigateToHeritageFunnel: jest.fn(),
|
||||
},
|
||||
});
|
||||
|
||||
wrapper.vm.$store.commit = jest.fn();
|
||||
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
|
||||
|
||||
wrapper.setData({
|
||||
selectedGlassParts: { "Rear-Stationary": { partNumber: "DB12209GTYN" } },
|
||||
|
|
@ -490,7 +494,12 @@ describe("vehicle-parts.vue", () => {
|
|||
|
||||
//Assert
|
||||
expect(wrapper.vm.$store.commit).toHaveBeenCalled();
|
||||
expect(navigateToHeritageFunnel).toHaveBeenCalled();
|
||||
|
||||
// TODO KO UNCOMMENT FOR QUOTE PAGES RELEASE
|
||||
// expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith(
|
||||
// navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
// { query: { fmgPage: "vehicle-parts" } }
|
||||
// );
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -529,7 +538,6 @@ function setupMocks({ pageHeaderWidgetHeaderText = {}, mountOptionsMockData = {}
|
|||
|
||||
wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent;
|
||||
wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn();
|
||||
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
|
||||
// wrapper.vm.$refs.onSubmit = jest.fn();
|
||||
// wrapper.vm.$refs.onInvalidSubmit = jest.fn();
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<template>
|
||||
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm">
|
||||
<div class="page-container-grouped-styles vehicle-parts">
|
||||
<loadingModal ref="loadingModal" />
|
||||
<funnelHeader ref="funnelHeader" cmsWidgetName="FunnelHeaderWidget" />
|
||||
<vehicleBanner
|
||||
ref="vehicleBanner"
|
||||
|
|
@ -35,6 +34,7 @@
|
|||
cmsWidgetName="FunnelFooterWidget"
|
||||
ref="funnelFooter"
|
||||
:isForwardActionDisabled="isForwardActionDisabled"
|
||||
@tempButtonClicked="() => handleTempButtonClicked(this)"
|
||||
@back-clicked="backButtonAction"
|
||||
@ForwardClicked="forwardButtonAction" />
|
||||
</div>
|
||||
|
|
@ -50,7 +50,6 @@ import vehicleBanner from "@/common-components/vehicle-banner/vehicle-banner";
|
|||
import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-header";
|
||||
import funnelFooter from "@/common-components/funnel-footer/funnel-footer";
|
||||
import alert from "@/ux-components/alert/alert";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
// Supporting Files
|
||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||
import { settleAllPromises } from "@/helpers/layout-helper";
|
||||
|
|
@ -188,8 +187,10 @@ export default {
|
|||
false
|
||||
);
|
||||
|
||||
// TODO KO delete after quote MVP
|
||||
this.navigateForward(matchedParts, null, this.shouldGoToHeritageQuote);
|
||||
// Navigate to the next page
|
||||
this.navigateForward(matchedParts);
|
||||
// this.navigateForward(matchedParts);
|
||||
},
|
||||
|
||||
LoadInitialPartsData() {
|
||||
|
|
@ -223,7 +224,6 @@ export default {
|
|||
funnelSubHeader,
|
||||
funnelFooter,
|
||||
alert,
|
||||
loadingModal,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
<template>
|
||||
<Form @submit="onSubmit" @invalid-submit="onInvalidSubmit" ref="theForm" v-slot="{ meta }">
|
||||
<div class="page-container-grouped-styles">
|
||||
<loadingModal ref="loadingModal" />
|
||||
<funnelHeader cmsWidgetName="FunnelHeaderWidget" />
|
||||
<vehicleBanner
|
||||
cmsWidgetName="VehicleBannerWidget"
|
||||
|
|
@ -104,6 +103,7 @@
|
|||
cmsWidgetName="FunnelFooterWidget"
|
||||
ref="funnelFooter"
|
||||
:isForwardActionDisabled="!meta.valid"
|
||||
@tempButtonClicked="() => handleTempButtonClicked(this)"
|
||||
@back-clicked="backButtonAction"
|
||||
@ForwardClicked="forwardButtonAction" />
|
||||
</div>
|
||||
|
|
@ -120,7 +120,6 @@ import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-he
|
|||
import alert from "@/ux-components/alert/alert";
|
||||
import textboxQuestion from "@/common-components/textbox-question/textbox-question";
|
||||
import vinInformation from "@/layouts/vin-lookup/vin-information/vin-information";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
import textBlock from "@/common-components/text-block/text-block";
|
||||
|
||||
// Supporting files
|
||||
|
|
@ -463,7 +462,6 @@ export default {
|
|||
textboxQuestion,
|
||||
alert,
|
||||
vinInformation,
|
||||
loadingModal,
|
||||
textBlock,
|
||||
Form,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,6 +7,12 @@ import baseMixin from "@/mixins/base-mixin.js";
|
|||
import store from "@/store";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
// TODO KO DELETE AFTER QUOTE MVP
|
||||
return {
|
||||
shouldGoToHeritageQuote: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
hasPartQuestions(partsOrQuestions) {
|
||||
return partsOrQuestions?.some((pq) => pq.partQuestions?.length > 0);
|
||||
|
|
@ -355,8 +361,9 @@ export default {
|
|||
}
|
||||
}
|
||||
},
|
||||
// TODO KO Delete `shouldGoToHeritageQuote`
|
||||
// Can't use `this` because navigateForward is also called from vin-pages-mixin
|
||||
async navigateForward(partsOrQuestions, vm) {
|
||||
async navigateForward(partsOrQuestions, vm, shouldGoToHeritageQuote) {
|
||||
const self = vm ?? this;
|
||||
const currentPage = self.$route.query.fmgPage;
|
||||
|
||||
|
|
@ -450,28 +457,33 @@ export default {
|
|||
// save to store lineItems.glassParts
|
||||
self.$store.commit(storeMutations.UPDATE_GLASS_PARTS, collectedGlassParts);
|
||||
|
||||
if (self.$refs.questionsPage) {
|
||||
self.$refs.questionsPage.showLoadingModal();
|
||||
} else if (self.$refs.loadingModal) {
|
||||
self.$refs.loadingModal.showModal();
|
||||
}
|
||||
|
||||
navigateToHeritageFunnel();
|
||||
shouldGoToHeritageQuote
|
||||
? navigateToHeritageFunnel()
|
||||
: self.$router.navigateWithSaving(
|
||||
self.navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
self.$route
|
||||
);
|
||||
}
|
||||
},
|
||||
backButtonAction() {
|
||||
// Can't use `this` because navigateForward is also called from quote
|
||||
backButtonAction(vm) {
|
||||
const self = vm ?? this;
|
||||
const partsOrQuestions = (
|
||||
this.$store.getters.pageData(fmgPageValues.PART_QUESTIONS) ??
|
||||
this.$store.getters.pageData(fmgPageValues.VEHICLE_PARTS)
|
||||
self.$store.getters.pageData(fmgPageValues.PART_QUESTIONS) ??
|
||||
self.$store.getters.pageData(fmgPageValues.VEHICLE_PARTS) ??
|
||||
self.$store.getters.pageData(fmgPageValues.MOLDING_QUESTIONS) ??
|
||||
self.$store.getters.pageData(fmgPageValues.CAPABILITY_QUESTIONS)
|
||||
)?.partsOrQuestions;
|
||||
const hasPartQuestions = this.hasPartQuestions(partsOrQuestions);
|
||||
const hasGlassLocationWithMultipleParts =
|
||||
this.hasGlassLocationWithMultipleParts(partsOrQuestions);
|
||||
const hasChildPartQuestions = this.hasChildPartQuestions(partsOrQuestions);
|
||||
const hasCapabilityQuestions = this.hasCapabilityQuestions(partsOrQuestions);
|
||||
let backNavigationScenario = navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS;
|
||||
let backNavigationScenario = self.$store.getters.vehicle.vin
|
||||
? navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS
|
||||
: navigationScenarios.CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS;
|
||||
|
||||
const currentPage = this.$route.query.fmgPage;
|
||||
const currentPage = self.$route.query.fmgPage;
|
||||
if (
|
||||
hasCapabilityQuestions &&
|
||||
this.currentPageComesAfterPage(currentPage, fmgPageValues.CAPABILITY_QUESTIONS)
|
||||
|
|
@ -495,7 +507,11 @@ export default {
|
|||
backNavigationScenario = navigationScenarios.CLICKED_BACK_WITH_PART_QUESTIONS;
|
||||
}
|
||||
|
||||
this.$router.navigateWithoutSaving(backNavigationScenario, this.$route);
|
||||
self.$router.navigateWithoutSaving(backNavigationScenario, self.$route);
|
||||
},
|
||||
// TODO KO delete this after quote mvp
|
||||
async handleTempButtonClicked(vm) {
|
||||
this.shouldGoToHeritageQuote = true;
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,8 +4,6 @@ import { setupMocksForJsFiles, getMountOptions } from "@/helpers/unit-test-helpe
|
|||
import { fmgPageValues } from "@/router/router-constants/fmgPage-values";
|
||||
import { storeMutations } from "@/constants/store-mutations";
|
||||
import { storeActions } from "@/constants/store-actions";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
|
||||
import { navigationScenarios } from "../router/router-constants/navigation-scenarios";
|
||||
import { getters } from "@/store";
|
||||
|
||||
|
|
@ -2088,7 +2086,8 @@ describe("vehicle-questions-mixin", () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe("should go to heritage funnel", () => {
|
||||
// TODO KO UNSKIP FOR QUOTE MVP
|
||||
describe.skip("should go to quote page", () => {
|
||||
test("single glass location selected, has no part questions and has one part => go to heritage funnel", async () => {
|
||||
// Arrange
|
||||
const partsOrQuestions = [
|
||||
|
|
@ -2123,7 +2122,12 @@ describe("vehicle-questions-mixin", () => {
|
|||
await wrapper.vm.navigateForward(partsOrQuestions);
|
||||
|
||||
// Assert
|
||||
expect(navigateToHeritageFunnel).toHaveBeenCalledTimes(1);
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1);
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith(
|
||||
navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
{ query: { fmgPage: "vin-lookup" } }
|
||||
);
|
||||
expect(wrapper.vm.$router.navigateWithoutSaving).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
test("multiple glass locations selected, each has one part and no part questions => go to heritage funnel", async () => {
|
||||
|
|
@ -2229,23 +2233,32 @@ describe("vehicle-questions-mixin", () => {
|
|||
storeMutations.UPDATE_GLASS_PARTS,
|
||||
collectedGlassParts
|
||||
);
|
||||
expect(wrapper.vm.$refs.loadingModal.showModal).toHaveBeenCalledTimes(1);
|
||||
expect(navigateToHeritageFunnel).toHaveBeenCalledTimes(1);
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledTimes(1);
|
||||
expect(wrapper.vm.$router.navigateWithSaving).toHaveBeenCalledWith(
|
||||
navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
{ query: { fmgPage: "vin-lookup" } }
|
||||
);
|
||||
expect(wrapper.vm.$router.navigateWithoutSaving).not.toHaveBeenCalled();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe("backButtonAction", () => {
|
||||
test("current page is quote and there are no questions => go to vin-lookup", () => {
|
||||
// TODO KO
|
||||
test.todo(
|
||||
"current page is quote, there are no questions, and we don't have their vin => go to estimate"
|
||||
);
|
||||
|
||||
test("current page is quote, there are no questions, and we have their vin => go to vin-lookup", () => {
|
||||
// Arrange
|
||||
const { wrapper } = setupMocks({ fmgPage: fmgPageValues.QUOTE });
|
||||
const { wrapper } = setupMocks({ fmgPage: fmgPageValues.QUOTE, hasVin: true });
|
||||
|
||||
// Act
|
||||
wrapper.vm.backButtonAction();
|
||||
|
||||
// Assert
|
||||
expect(wrapper.vm.$router.navigateWithoutSaving).toHaveBeenCalledWith(
|
||||
navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS,
|
||||
navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS,
|
||||
{ query: { fmgPage: fmgPageValues.QUOTE } }
|
||||
);
|
||||
});
|
||||
|
|
@ -2319,7 +2332,7 @@ describe("vehicle-questions-mixin", () => {
|
|||
});
|
||||
});
|
||||
|
||||
function setupMocks({ fmgPage = fmgPageValues.VIN_LOOKUP }) {
|
||||
function setupMocks({ fmgPage = fmgPageValues.VIN_LOOKUP, hasVin, carId }) {
|
||||
const baseMixin = setupMocksForJsFiles({
|
||||
actionList: [
|
||||
{
|
||||
|
|
@ -2346,7 +2359,13 @@ function setupMocks({ fmgPage = fmgPageValues.VIN_LOOKUP }) {
|
|||
store: {
|
||||
commit: jest.fn(),
|
||||
dispatch: jest.fn(),
|
||||
getters: getters,
|
||||
getters: {
|
||||
...getters,
|
||||
vehicle: {
|
||||
vin: hasVin ? "VIN" : undefined,
|
||||
carId: carId,
|
||||
},
|
||||
},
|
||||
},
|
||||
route: {
|
||||
query: {
|
||||
|
|
@ -2358,14 +2377,11 @@ function setupMocks({ fmgPage = fmgPageValues.VIN_LOOKUP }) {
|
|||
// store.dispatch = jest.fn();
|
||||
|
||||
const mockVehicleQuestionComponent = {
|
||||
components: { loadingModal },
|
||||
template: '<loadingModal ref="loadingModal" />',
|
||||
template: "<div />",
|
||||
mixins: [vehicleQuestionsMixin, baseMixin.baseMixin],
|
||||
};
|
||||
|
||||
const wrapper = shallowMount(mockVehicleQuestionComponent, mocks);
|
||||
|
||||
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
|
||||
|
||||
return { wrapper };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,12 @@ import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
|
|||
import { saveSession } from "@/helpers/heritage-integration/order-helper.js";
|
||||
|
||||
export default {
|
||||
data() {
|
||||
// TODO KO DELETE AFTER QUOTE MVP
|
||||
return {
|
||||
shouldGoToHeritageQuote: false,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
async navigateForwardWithSingleCarMatch() {
|
||||
// If we have not already saved a session, we need to save one now before the lengthy call to getPartsOrQuestions
|
||||
|
|
@ -14,7 +20,17 @@ export default {
|
|||
const result = await this.dispatchStoreAction(storeActions.GET_PARTS_OR_QUESTIONS);
|
||||
const partsOrQuestions = result.data.partsOrQuestions;
|
||||
|
||||
vehicleQuestionsMixin.methods.navigateForward(partsOrQuestions, this);
|
||||
// TODO KO delete `this.shouldGoToHeritageQuote`
|
||||
vehicleQuestionsMixin.methods.navigateForward(
|
||||
partsOrQuestions,
|
||||
this,
|
||||
this.shouldGoToHeritageQuote
|
||||
);
|
||||
},
|
||||
// TODO KO delete this after quote mvp
|
||||
async handleTempButtonClicked(vm) {
|
||||
this.shouldGoToHeritageQuote = true;
|
||||
await vm.forwardButtonAction();
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ import vinPagesMixin from "@/mixins/vin-pages-mixin";
|
|||
import { shallowMount } from "@vue/test-utils";
|
||||
import { setupMocksForJsFiles, getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||
import { storeActions } from "@/constants/store-actions";
|
||||
import loadingModal from "@/common-components/loading-modal/loading-modal.vue";
|
||||
import vehicleQuestionsMixin from "@/mixins/vehicle-questions-mixin";
|
||||
|
||||
jest.mock("@/helpers/heritage-integration/navigation-helper", () => ({
|
||||
|
|
@ -62,14 +61,10 @@ function setupMocks({ partsOrQuestions = [] }) {
|
|||
});
|
||||
|
||||
const mockVinComponent = {
|
||||
components: { loadingModal },
|
||||
template: '<loadingModal ref="loadingModal" />',
|
||||
mixins: [vinPagesMixin, baseMixin.baseMixin],
|
||||
};
|
||||
|
||||
const wrapper = shallowMount(mockVinComponent, mocks);
|
||||
|
||||
wrapper.vm.$refs.loadingModal.showModal = jest.fn();
|
||||
|
||||
return { wrapper };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ const navigationScenarios = {
|
|||
SELECTED_MANUAL_VIN: "SELECTED_MANUAL_VIN",
|
||||
SELECTED_LICENSE_PLATE: "SELECTED_LICENSE_PLATE",
|
||||
SELECTED_HOME_ADDRESS: "SELECTED_HOME_ADDRESS",
|
||||
HAS_NO_QUESTIONS: "HAS_NO_QUESTIONS",
|
||||
|
||||
// Question pages
|
||||
HAS_PART_QUESTIONS: "HAS_PART_QUESTIONS",
|
||||
|
|
@ -25,10 +26,14 @@ const navigationScenarios = {
|
|||
HAS_MOLDING_QUESTIONS: "HAS_MOLDING_QUESTIONS",
|
||||
HAS_CAPABILITY_QUESTIONS: "HAS_CAPABILITY_QUESTIONS",
|
||||
HAS_NO_MORE_QUESTIONS: "HAS_NO_MORE_QUESTIONS",
|
||||
CLICKED_BACK_WITH_NO_QUESTIONS: "CLICKED_BACK_WITH_NO_QUESTIONS",
|
||||
CLICKED_BACK_WITH_PART_QUESTIONS: "CLICKED_BACK_WITH_PART_QUESTIONS",
|
||||
CLICKED_BACK_WITH_MULTIPLE_PARTS_TO_CHOOSE: "CLICKED_BACK_WITH_MULTIPLE_PARTS_TO_CHOOSE",
|
||||
CLICKED_BACK_WITH_MOLDING_QUESTIONS: "CLICKED_BACK_WITH_MOLDING_QUESTIONS",
|
||||
CLICKED_BACK_WITH_CAPABILITY_QUESTIONS: "CLICKED_BACK_WITH_CAPABILITY_QUESTIONS",
|
||||
|
||||
// Quote
|
||||
CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS: "CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS",
|
||||
CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS: "CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS",
|
||||
};
|
||||
|
||||
export { navigationScenarios };
|
||||
|
|
|
|||
|
|
@ -109,6 +109,10 @@ const routingTable = function (store) {
|
|||
scenario: navigationScenarios.HAS_CAPABILITY_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.CAPABILITY_QUESTIONS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.QUOTE,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
@ -138,6 +142,10 @@ const routingTable = function (store) {
|
|||
scenario: navigationScenarios.HAS_CAPABILITY_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.CAPABILITY_QUESTIONS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.QUOTE,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
@ -171,6 +179,10 @@ const routingTable = function (store) {
|
|||
scenario: navigationScenarios.HAS_CAPABILITY_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.CAPABILITY_QUESTIONS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.QUOTE,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
@ -200,6 +212,10 @@ const routingTable = function (store) {
|
|||
scenario: navigationScenarios.HAS_CAPABILITY_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.CAPABILITY_QUESTIONS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.HAS_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.QUOTE,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
@ -221,15 +237,23 @@ const routingTable = function (store) {
|
|||
scenario: navigationScenarios.SELECTED_HOME_ADDRESS,
|
||||
destinationFmgPageValue: fmgPageValues.ADDRESS_LOOKUP,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.HAS_NO_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.QUOTE,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
fmgPageValue: fmgPageValues.PART_QUESTIONS,
|
||||
maps: [
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS,
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.VIN_LOOKUP,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.ESTIMATE,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.HAS_MULTIPLE_PARTS_TO_CHOOSE,
|
||||
destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS,
|
||||
|
|
@ -260,9 +284,13 @@ const routingTable = function (store) {
|
|||
destinationFmgPageValue: fmgPageValues.PART_QUESTIONS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS,
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.VIN_LOOKUP,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.ESTIMATE,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.HAS_MOLDING_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.MOLDING_QUESTIONS,
|
||||
|
|
@ -281,9 +309,13 @@ const routingTable = function (store) {
|
|||
fmgPageValue: fmgPageValues.MOLDING_QUESTIONS,
|
||||
maps: [
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS,
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.VIN_LOOKUP,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.ESTIMATE,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_PART_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.PART_QUESTIONS,
|
||||
|
|
@ -306,9 +338,13 @@ const routingTable = function (store) {
|
|||
fmgPageValue: fmgPageValues.CAPABILITY_QUESTIONS,
|
||||
maps: [
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_QUESTIONS,
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.VIN_LOOKUP,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.ESTIMATE,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_PART_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.PART_QUESTIONS,
|
||||
|
|
@ -327,6 +363,35 @@ const routingTable = function (store) {
|
|||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
fmgPageValue: fmgPageValues.QUOTE,
|
||||
maps: [
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_VIN_AND_NO_MORE_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.VIN_LOOKUP,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_NO_VIN_NOR_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.ESTIMATE,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_PART_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.PART_QUESTIONS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_MULTIPLE_PARTS_TO_CHOOSE,
|
||||
destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_MOLDING_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.MOLDING_QUESTIONS,
|
||||
},
|
||||
{
|
||||
scenario: navigationScenarios.CLICKED_BACK_WITH_CAPABILITY_QUESTIONS,
|
||||
destinationFmgPageValue: fmgPageValues.CAPABILITY_QUESTIONS,
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -369,21 +369,6 @@ export const mutations = {
|
|||
updateTriggeredSiteEntry(state, wasSiteEntryTriggered) {
|
||||
state.applicationUser.triggeredSiteEntry = wasSiteEntryTriggered;
|
||||
},
|
||||
// START GA click event mutations
|
||||
// updateCurrentlySelectedValues(state, groupName, value) {
|
||||
// state.gaClickInformation.currentlySelectedValues[groupName] = value;
|
||||
// },
|
||||
// updateFiredGaClickEventValues(state, groupName, value) {
|
||||
// state.gaClickInformation.firedGaClickEventValues[groupName] = value;
|
||||
// },
|
||||
// updateLastFocusedInputGroup(state, groupName) {
|
||||
// state.gaClickInformation.lastFocusedInputGroup = groupName;
|
||||
// },
|
||||
// updateWasLastFocusedInputMultiselect(state, wasLastFocusedInputMultiselect) {
|
||||
// state.gaClickInformation.wasLastFocusedInputMultiselect =
|
||||
// wasLastFocusedInputMultiselect;
|
||||
// },
|
||||
// END GA click event mutations
|
||||
};
|
||||
|
||||
// Export Getters
|
||||
|
|
@ -400,10 +385,10 @@ export const getters = {
|
|||
eventBus: (state) => state.applicationUser.eventBus,
|
||||
damage: (state) => state.order.damage,
|
||||
hasAnyNonWindshieldGlassParts: (state) => {
|
||||
const nonWindshieldItems = state.order.damage.glassToReplace.filter(
|
||||
const nonWindshieldItems = state.order.damage.glassToReplace?.filter(
|
||||
(glassToReplace) => glassToReplace.glassLocation != "Windshield"
|
||||
);
|
||||
return !!nonWindshieldItems.length;
|
||||
return !!nonWindshieldItems?.length;
|
||||
},
|
||||
lineItems: (state) => state.order.lineItems,
|
||||
pageData: (state) => (page) => {
|
||||
|
|
@ -472,7 +457,6 @@ export const getters = {
|
|||
state.applicationUser.experiments
|
||||
.map((x) => x.settings)
|
||||
.reduce((r, c) => Object.assign(r, c), {}) ?? {},
|
||||
// gaClickInformation: (state) => state.gaClickInformation,
|
||||
};
|
||||
|
||||
function getNonFalseValuesOfPropertyInArrayOfObjects(array, propertyName) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue