diff --git a/jest.config.js b/jest.config.js
index 0a063507d..f4c60e4f7 100644
--- a/jest.config.js
+++ b/jest.config.js
@@ -12,6 +12,7 @@ module.exports = {
"!src/router/**/*.js",
"!src/helpers/unit-test-helper.js",
"!src/layouts/vehicle-damage/windshield-options/windshield-options.vue",
+ "!src/layouts/molding-questions/**/*.vue",
"!src/layouts/part-questions/**/*.vue",
"!src/layouts/reveal/**/*.vue",
"!src/ux-components/text-link/**/*.vue",
diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.spec.js b/src/layouts/license-plate-lookup/license-plate-lookup.spec.js
index 2e83c3103..7bfc02eba 100644
--- a/src/layouts/license-plate-lookup/license-plate-lookup.spec.js
+++ b/src/layouts/license-plate-lookup/license-plate-lookup.spec.js
@@ -235,7 +235,7 @@ describe("license-plate-lookup.vue", () => {
expect(wrapper.vm.$router.navigate).toHaveBeenCalled();
});
- test("navigateToHeritageFunnel should be called if isCarIdDifferent is false or isSelectedGlassAvailableForVehicle is true when navigateForward is called", async () => {
+ test("navigateForwardWithSingleCarMatch should be called if isCarIdDifferent is false or isSelectedGlassAvailableForVehicle is true when navigateForward is called", async () => {
// Arrange
const { wrapper } = setupMocks({});
@@ -247,11 +247,11 @@ describe("license-plate-lookup.vue", () => {
wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => {
return '';
});
- navigateToHeritage.navigateToHeritageFunnel = jest.fn();
+ wrapper.vm.navigateForwardWithSingleCarMatch = jest.fn();
await wrapper.vm.navigateForward();
//Assert
- expect(navigateToHeritage.navigateToHeritageFunnel).toHaveBeenCalled();
+ expect(wrapper.vm.navigateForwardWithSingleCarMatch).toHaveBeenCalled();
});
test("carId matches returned vehicle => navigateForwardWithSingleCarMatch", async () => {
diff --git a/src/layouts/molding-questions/molding-questions.vue b/src/layouts/molding-questions/molding-questions.vue
new file mode 100644
index 000000000..04259a3c3
--- /dev/null
+++ b/src/layouts/molding-questions/molding-questions.vue
@@ -0,0 +1,288 @@
+
+
+
+
+
+
+
diff --git a/src/layouts/part-questions/part-questions.vue b/src/layouts/part-questions/part-questions.vue
index f5ec4841d..856b8a099 100644
--- a/src/layouts/part-questions/part-questions.vue
+++ b/src/layouts/part-questions/part-questions.vue
@@ -142,14 +142,14 @@ export default {
if (!partsLookup) { return }
- const glassNameAndParts = partsLookup.data.glassNameAndParts;
+ const glassNameAndPartsForStore = partsLookup.data.glassNameAndPartsForStore;
// test response data for multiple parts
- const hasMultipleParts = glassNameAndParts.some((glass) => glass.parts?.length > 1);
+ const hasMultipleParts = glassNameAndPartsForStore.some((glass) => glass.parts?.length > 1);
// loop through all glass items
const collectedGlassParts = [];
- glassNameAndParts.forEach((glass) => {
+ glassNameAndPartsForStore.forEach((glass) => {
if (Array.isArray(glass.parts) && glass.parts.length === 1) {
const singlePart = glass.parts[0];
collectedGlassParts.push({
@@ -159,24 +159,37 @@ export default {
"requiresRecalibration": singlePart.requiresRecalibration,
"childParts": singlePart.childParts,
"price": singlePart.price,
- })
+ });
+ // check for and collect any molding questions
+ if (Array.isArray(singlePart.childPartQuestions) && singlePart.childPartQuestions.length > 0) {
+ this.moldingQuestionsForStore.push({
+ "glassName": glass.glassName,
+ "glassLocation": glass.glassLocation,
+ "childPartQuestions": singlePart.childPartQuestions,
+ });
+ }
}
});
if (!hasMultipleParts) {
store.commit(storeMutations.UPDATE_GLASS_PARTS, collectedGlassParts);
}
- this.navigateForward(hasMultipleParts, glassNameAndParts);
+ this.navigateForward(hasMultipleParts, glassNameAndPartsForStore);
},
- async navigateForward(hasMultipleParts, glassNameAndParts) {
+ async navigateForward(hasMultipleParts, glassNameAndPartsForStore) {
if (hasMultipleParts) {
// if multiple parts on any glass
// go to vehicle-parts page and pass the partsData
- this.$router.navigate(this.navigationScenarios.ANSWERED_QUESTIONS_WITH_MULTIPLE_PARTS,this.$route,{},{},{partsOrQuestions: glassNameAndParts});
+ this.$router.navigate(this.navigationScenarios.ANSWERED_QUESTIONS_WITH_MULTIPLE_PARTS,this.$route,{},{},{partsOrQuestions: glassNameAndPartsForStore});
} else {
// if single parts only
// go to quote page
this.$router.navigate(this.navigationScenarios.ANSWERED_QUESTIONS_WITH_SINGLE_PART,this.$route);
}
+
+ // TODO - ADD CHECK FOR CAPABILITY QUESTIONS TO SEE IF NAVIGATE TO CAPABILITY-QUESTIONS
+
+
+
},
arePagePrerequisitesValid() {
return Object.keys(store.getters.pageData(fmgPageValues.PART_QUESTIONS)).length > 0;
diff --git a/src/layouts/vehicle-parts/vehicle-parts.vue b/src/layouts/vehicle-parts/vehicle-parts.vue
index ce5727ce3..d0af557b0 100644
--- a/src/layouts/vehicle-parts/vehicle-parts.vue
+++ b/src/layouts/vehicle-parts/vehicle-parts.vue
@@ -49,217 +49,208 @@
diff --git a/src/mixins/vin-pages-mixin.js b/src/mixins/vin-pages-mixin.js
index fce96c980..196a21e63 100644
--- a/src/mixins/vin-pages-mixin.js
+++ b/src/mixins/vin-pages-mixin.js
@@ -7,10 +7,14 @@ export default {
methods: {
async navigateForwardWithSingleCarMatch() {
const result = await this.dispatchStoreAction(storeActions.GET_PARTS_OR_QUESTIONS);
-
const partsOrQuestions = result.data.partsOrQuestions;
const hasPartsQuestions = partsOrQuestions.some(pq => pq.partQuestions?.length > 0);
const hasGlassLocationWithMultipleParts = partsOrQuestions.some(pq => pq.parts?.length > 1);
+ const hasChildPartQuestions = partsOrQuestions.some(pq => {
+ return pq.parts?.some(part => part.childPartQuestions?.length > 0);
+ });
+
+ // TODO - ADD CHECK FOR CAPABILITY QUESTIONS TO SEE IF NAVIGATE TO CAPABILITY-QUESTIONS
if (hasPartsQuestions) {
this.$router.navigate(this.navigationScenarios.SELECTED_VIN_WITH_PART_QUESTIONS, this.$route, {}, {}, result.data);
@@ -18,6 +22,9 @@ export default {
else if (hasGlassLocationWithMultipleParts) {
this.$router.navigate(this.navigationScenarios.SELECTED_VIN_WITH_MULTIPLE_PARTS, this.$route, {}, {}, result.data);
}
+ else if (hasChildPartQuestions) {
+ this.$router.navigate(this.navigationScenarios.SELECTED_VIN_WITH_MOLDING_QUESTIONS, this.$route, {}, {}, result.data);
+ }
else {
store.commit(storeMutations.UPDATE_GLASS_PARTS, result.data);
this.$refs.loadingModal.showModal();
diff --git a/src/router/router-constants/fmgPage-values.js b/src/router/router-constants/fmgPage-values.js
index d067895ee..7a38c6b40 100644
--- a/src/router/router-constants/fmgPage-values.js
+++ b/src/router/router-constants/fmgPage-values.js
@@ -8,6 +8,7 @@ const fmgPageValues = {
VIN_LOOKUP: "vin-lookup",
VEHICLE_PARTS: "vehicle-parts",
PART_QUESTIONS: "part-questions",
+ MOLDING_QUESTIONS: "molding-questions",
LICENSE_PLATE_LOOKUP: "license-plate-lookup",
REVEAL: "reveal",
ESTIMATE: "estimate",
diff --git a/src/router/router-constants/navigation-scenarios.js b/src/router/router-constants/navigation-scenarios.js
index 5768c55de..ab1772de3 100644
--- a/src/router/router-constants/navigation-scenarios.js
+++ b/src/router/router-constants/navigation-scenarios.js
@@ -10,6 +10,7 @@ const navigationScenarios = {
SELECTED_PARTS: "SELECTED_PARTS",
SELECTED_VIN_WITH_PART_QUESTIONS: "SELECTED_VIN_WITH_PART_QUESTIONS",
SELECTED_VIN_WITH_MULTIPLE_PARTS: "SELECTED_VIN_WITH_MULTIPLE_PARTS",
+ SELECTED_VIN_WITH_MOLDING_QUESTIONS: "SELECTED_VIN_WITH_MOLDING_QUESTIONS",
CONTINUING_WITH_SINGLE_PART: "CONTINUING_WITH_SINGLE_PART",
CONTINUING_WITH_MULTIPLE_VEHICLES: "CONTINUING_WITH_MULTIPLE_VEHICLES",
SELECTED_VIN_HAS_MISMATCHED_GLASS: "SELECTED_VIN_HAS_MISMATCHED_GLASS",
@@ -19,6 +20,7 @@ const navigationScenarios = {
SELECTED_HOME_ADDRESS: "SELECTED_HOME_ADDRESS",
ANSWERED_QUESTIONS_WITH_SINGLE_PART: "ANSWERED_QUESTIONS_WITH_SINGLE_PART",
ANSWERED_QUESTIONS_WITH_MULTIPLE_PARTS: "ANSWERED_QUESTIONS_WITH_MULTIPLE_PARTS",
+ HAS_MOLDING_QUESTIONS: "HAS_MOLDING_QUESTIONS",
SELECTED_PROVIDE_VIN_DIFFERENT_WAY: "SELECTED_PROVIDE_VIN_DIFFERENT_WAY"
};
diff --git a/src/router/router-constants/routing-table.js b/src/router/router-constants/routing-table.js
index 3f81e99ad..82bb59ff6 100644
--- a/src/router/router-constants/routing-table.js
+++ b/src/router/router-constants/routing-table.js
@@ -79,8 +79,8 @@ const routingTable = [
destinationFmgPageValue: fmgPageValues.QUOTE,
},
{
- scenario: navigationScenarios.CLICKED_FORWARD,
- destinationFmgPageValue: fmgPageValues.REVEAL,
+ scenario: navigationScenarios.HAS_MOLDING_QUESTIONS,
+ destinationFmgPageValue: fmgPageValues.MOLDING_QUESTIONS
},
],
},
@@ -119,6 +119,10 @@ const routingTable = [
{
scenario: navigationScenarios.SELECTED_VIN_WITH_MULTIPLE_PARTS,
destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS
+ },
+ {
+ scenario: navigationScenarios.SELECTED_VIN_WITH_MOLDING_QUESTIONS,
+ destinationFmgPageValue: fmgPageValues.MOLDING_QUESTIONS
}
],
},
@@ -140,6 +144,10 @@ const routingTable = [
{
scenario: navigationScenarios.SELECTED_VIN_WITH_MULTIPLE_PARTS,
destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS
+ },
+ {
+ scenario: navigationScenarios.SELECTED_VIN_WITH_MOLDING_QUESTIONS,
+ destinationFmgPageValue: fmgPageValues.MOLDING_QUESTIONS
}
],
},
@@ -165,6 +173,10 @@ const routingTable = [
{
scenario: navigationScenarios.SELECTED_VIN_WITH_MULTIPLE_PARTS,
destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS
+ },
+ {
+ scenario: navigationScenarios.SELECTED_VIN_WITH_MOLDING_QUESTIONS,
+ destinationFmgPageValue: fmgPageValues.MOLDING_QUESTIONS
}
],
},
@@ -225,12 +237,25 @@ const routingTable = [
scenario: navigationScenarios.ANSWERED_QUESTIONS_WITH_MULTIPLE_PARTS,
destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS
},
+ {
+ scenario: navigationScenarios.HAS_MOLDING_QUESTIONS,
+ destinationFmgPageValue: fmgPageValues.MOLDING_QUESTIONS,
+ },
{
scenario: navigationScenarios.ANSWERED_QUESTIONS_WITH_SINGLE_PART,
destinationFmgPageValue: fmgPageValues.QUOTE,
},
]
},
+ {
+ fmgPageValue: fmgPageValues.MOLDING_QUESTIONS,
+ maps: [
+ {
+ scenario: navigationScenarios.CLICKED_BACK,
+ destinationFmgPageValue: fmgPageValues.VEHICLE_PARTS
+ },
+ ]
+ },
];
export { routingTable };