+
{
});
});
+describe("vehicle-damage.vue", () => {
+ test("BackButtonAction triggers a router.navigate change", async () => {
+
+ //Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ vehicleDamage.beforeRouteEnter.call(
+ wrapper.vm,
+ { query: { fmgPage: "vehicle-damage" } },
+ undefined,
+ (c) => c(wrapper.vm)
+ );
+
+ wrapper.vm.backButtonAction();
+
+ //Assert
+ expect(wrapper.vm.$router.navigate).toHaveBeenCalled();
+
+ });
+});
+
+describe("vehicle-damage.vue", () => {
+ test("isRearWindowDamageLocation is true if Rear Window damage is selected", async () => {
+
+ //Arrange
+ const { wrapper } = setupMocks({});
+
+ //Act
+ vehicleDamage.beforeRouteEnter.call(
+ wrapper.vm,
+ { query: { fmgPage: "vehicle-damage" } },
+ undefined,
+ (c) => c(wrapper.vm)
+ );
+
+ wrapper.vm.selectedDamageLocations = ["RearWindow"];
+
+ //Assert
+ expect(wrapper.vm.isRearWindowDamageLocation).toEqual(true);
+
+ });
+});
+
function setupMocks({
pageHeaderWidgetHeaderText = {},
- mountOptionsMockData = {},
+ mountOptionsMockData = {
+ router: {
+ navigate: jest.fn(),
+ },
+ },
}) {
//Mock api responses
baseMixin.methods.dispatchNonBlockingStoreAction = jest.fn();
@@ -194,6 +243,9 @@ function setupMocks({
windshieldOptions: {
availableReplacementOptions: ["Single", "Driver", "Passenger"],
},
+ backGlassOptions: {
+ availableReplacementOptions: ["Front", "Back", "Side"],
+ },
},
};
@@ -227,6 +279,10 @@ function setupMocks({
initializeComponent: jest.fn(),
};
+ replaceOptionsQuestion.methods = {
+ initializeComponent: jest.fn(),
+ };
+
funnelFooter.methods = {
initializeComponent: jest.fn(),
}
@@ -259,6 +315,12 @@ function setupMocks({
funnelSubHeaderWrapper.vm.initializeComponent =
funnelSubHeader.methods.initializeComponent;
+ const backGlassOptionsWrapper = wrapper.findComponent({
+ name: "replaceOptionsQuestion",
+ });
+ backGlassOptionsWrapper.vm.initializeComponent =
+ replaceOptionsQuestion.methods.initializeComponent;
+
const damageLocationQuestionWrapper = wrapper.findComponent({
name: "damageLocationQuestion",
});
diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue
index bce74b92f..edbaf3a0c 100644
--- a/src/layouts/vehicle-damage/vehicle-damage.vue
+++ b/src/layouts/vehicle-damage/vehicle-damage.vue
@@ -3,12 +3,28 @@
-
-
+
-
+
+
@@ -22,6 +38,7 @@ import funnelSubHeader from "@/common-components/funnel-sub-header/funnel-sub-he
import sideDoorOptions from "@/layouts/vehicle-damage/side-door-options/side-door-options";
import damageLocationQuestion from "@/layouts/vehicle-damage/damage-location-question/damage-location-question";
import windshieldOptions from "@/layouts/vehicle-damage/windshield-options/windshield-options";
+import replaceOptionsQuestion from "@/layouts/vehicle-damage/replace-options-question/replace-options-question";
// Supporting files
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
@@ -77,11 +94,22 @@ export default {
resultMap.cmsContent.WindshieldDamageTypeQuestion, resultMap.cmsContent.WindshieldChipCountQuestion,
resultMap.cmsContent.WindshieldReplaceOptionsQuestion, resultMap.damageOptions.windshieldOptions.availableReplacementOptions
);
+ vm.$refs.backGlassOptions.initializeComponent(
+ resultMap.cmsContent.RearReplaceOptionsQuestion, resultMap.damageOptions.backGlassOptions.availableReplacementOptions
+ );
vm.$refs.funnelFooter.initializeComponent(
resultMap.cmsContent.FunnelFooterWidget
);
});
},
+ computed: {
+ isRearWindowDamageLocation() {
+ return this.selectedDamageLocations.some(selectedDamages =>
+ {
+ return selectedDamages.toUpperCase() === "REARWINDOW";
+ });
+ },
+ },
data(){
return {
selectedDamageLocations: [],
@@ -90,7 +118,8 @@ export default {
selectedDriverSideReplacOptions: [],
selectedPassengerSideReplaceOptions: []
},
- selectedWindshieldOptions: []
+ selectedWindshieldOptions: [],
+ selectedRearReplaceOptions: [],
}
},
methods: {
@@ -117,6 +146,7 @@ export default {
sideDoorOptions,
damageLocationQuestion,
windshieldOptions,
+ replaceOptionsQuestion,
},
};