Merge pull request #337 from Safelite/feature/digital/SSR-386
Feature/digital/ssr 386
This commit is contained in:
commit
ecda55ec01
2 changed files with 80 additions and 30 deletions
|
|
@ -4,7 +4,6 @@ import { shallowMount } from "@vue/test-utils";
|
||||||
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
import { getMountOptions } from "@/helpers/unit-test-helper.js";
|
||||||
import { useMainStore } from "@/store";
|
import { useMainStore } from "@/store";
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
import {vehicleSelectionOptions} from "@/constants/vehicle-selection-options";
|
|
||||||
import { navigationScenarios } from "@/router/router-constants/navigation-scenarios";
|
import { navigationScenarios } from "@/router/router-constants/navigation-scenarios";
|
||||||
|
|
||||||
// Mock fetchCmsContentForPage
|
// Mock fetchCmsContentForPage
|
||||||
|
|
@ -33,17 +32,6 @@ describe("policy-vehicles.vue", () => {
|
||||||
//Assert
|
//Assert
|
||||||
expect(wrapper.vm.$router.navigate).toBeCalled();
|
expect(wrapper.vm.$router.navigate).toBeCalled();
|
||||||
});
|
});
|
||||||
test("Should navigate to CLICKED_BACK if backButtonAction is run", async () => {
|
|
||||||
// Arrange
|
|
||||||
const { wrapper } = setupMocks({});
|
|
||||||
|
|
||||||
// Act
|
|
||||||
await wrapper.vm.backButtonAction();
|
|
||||||
|
|
||||||
//Assert
|
|
||||||
expect(wrapper.vm.$router.navigate).toBeCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
test("Selected vehicle VIN do match vehicles listed in our system (CarIDs) found then navigate forward to vehicle-damage page.", async () => {
|
test("Selected vehicle VIN do match vehicles listed in our system (CarIDs) found then navigate forward to vehicle-damage page.", async () => {
|
||||||
//Arrange
|
//Arrange
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
|
|
@ -87,7 +75,7 @@ describe("policy-vehicles.vue", () => {
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
await wrapper.setData({
|
await wrapper.setData({
|
||||||
selectedVehicleVin: vehicleSelectionOptions.VEHICLE_NOT_LISTED,
|
selectedVehicleVin: "Vehicle not listed",
|
||||||
});
|
});
|
||||||
await wrapper.vm.forwardButtonAction();
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
|
|
@ -99,6 +87,16 @@ describe("policy-vehicles.vue", () => {
|
||||||
{}
|
{}
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
test("first vehicle is auto-selected if only one vehicle on policy", async () => {
|
||||||
|
//Arrange
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.$nextTick();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper.vm.selectedVehicleVin).toBe("5NMS3CADXLH233004");
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function setupMocks({
|
function setupMocks({
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col">
|
<div class="col">
|
||||||
<div class="select-car-form rounded text-center">
|
<div class="select-car-form rounded text-center">
|
||||||
<vehicleBanner cmsWidgetName="VehicleBannerWidget" :displayGenericVehicleImage="true" class="mt-2 mb-4" />
|
<vehicleBanner cmsWidgetName="VehicleBannerWidget" :displayGenericVehicleImage="displayGeneric" class="mt-2 mb-4" />
|
||||||
<policyVehiclesQuestion
|
<policyVehiclesQuestion
|
||||||
class="px-4"
|
class="px-4"
|
||||||
cmsWidgetName="PolicyVehiclesQuestion"
|
cmsWidgetName="PolicyVehiclesQuestion"
|
||||||
|
|
@ -51,9 +51,13 @@ export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
selectedVehicleVin: "",
|
selectedVehicleVin: "",
|
||||||
|
displayGeneric: true,
|
||||||
bailout: false
|
bailout: false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
mounted() {
|
||||||
|
this.autoSelectIfOneVehicle();
|
||||||
|
},
|
||||||
async beforeRouteEnter(to, from, next)
|
async beforeRouteEnter(to, from, next)
|
||||||
{
|
{
|
||||||
// Call APIs
|
// Call APIs
|
||||||
|
|
@ -123,7 +127,11 @@ export default {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
autoSelectIfOneVehicle() {
|
||||||
|
if (this.VehiclesFromApi.length == 1) {
|
||||||
|
this.selectedVehicleVin = this.VehiclesFromApi[0].vin;
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
computed:{
|
computed:{
|
||||||
VehiclesForQuestions() {
|
VehiclesForQuestions() {
|
||||||
|
|
@ -146,6 +154,50 @@ export default {
|
||||||
VehiclesFromApi() {
|
VehiclesFromApi() {
|
||||||
return useMainStore().pageData(issPageValues.POLICY_VEHICLES);
|
return useMainStore().pageData(issPageValues.POLICY_VEHICLES);
|
||||||
},
|
},
|
||||||
|
selectedVehicle() {
|
||||||
|
const vehicle = this.mainStore.lookupVehicleByVin(this.selectedVehicleVin);
|
||||||
|
return vehicle;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
async selectedVehicleVin(value) {
|
||||||
|
if (value === "Vehicle not listed") {
|
||||||
|
// clear previously selected vehicle and image
|
||||||
|
this.mainStore.resetVehicleState();
|
||||||
|
this.displayGeneric = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
// get vehicle details from selected VIN
|
||||||
|
const vehicle = await this.lookupVehicleByVin(value);
|
||||||
|
|
||||||
|
// handle error in case vehicle info doesn't come back for selected VIN
|
||||||
|
if (vehicle.error) {
|
||||||
|
this.mainStore.resetVehicleState();
|
||||||
|
this.displayGeneric = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// save selected vehicle to the store
|
||||||
|
this.mainStore.updateVehicle(vehicle.data);
|
||||||
|
this.displayGeneric = true;
|
||||||
|
|
||||||
|
// get the style(s) associated with the selected YMM
|
||||||
|
const styleOptions = await this.mainStore.getVehicleStyles(
|
||||||
|
vehicle.data.year,
|
||||||
|
vehicle.data.make,
|
||||||
|
vehicle.data.model
|
||||||
|
)
|
||||||
|
|
||||||
|
// if there is more than 1 style for the selected vehicle, display generic/blurred image
|
||||||
|
if (styleOptions?.data?.length > 1) {
|
||||||
|
this.displayGeneric = true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// display clear image of vehicle
|
||||||
|
this.displayGeneric = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
siteHeader,
|
siteHeader,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue