Merge pull request #337 from Safelite/feature/digital/SSR-386

Feature/digital/ssr 386
This commit is contained in:
katiekroell 2023-06-12 11:12:54 -04:00 committed by GitHub
commit ecda55ec01
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 80 additions and 30 deletions

View file

@ -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({
@ -109,15 +107,15 @@ function setupMocks({
useMainStore().applicationUser = { useMainStore().applicationUser = {
pageData: { pageData: {
"policy-vehicles": "policy-vehicles":
[ [
{ {
vehicleMake: "Hyundai", vehicleMake: "Hyundai",
vehicleModel: "Santa Fe", vehicleModel: "Santa Fe",
vehicleStyle: "4 door utility", vehicleStyle: "4 door utility",
vehicleYear: 2020, vehicleYear: 2020,
vin: "5NMS3CADXLH233004", vin: "5NMS3CADXLH233004",
}, },
], ],
} }
}; };
useMainStore().lookupVehicleByVin = jest.fn().mockImplementation(() => { useMainStore().lookupVehicleByVin = jest.fn().mockImplementation(() => {

View file

@ -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"
@ -50,9 +50,13 @@ export default {
mixins: [BaseFormMixin], mixins: [BaseFormMixin],
data() { data() {
return { return {
selectedVehicleVin: "", selectedVehicleVin: "",
bailout: false displayGeneric: true,
} bailout: false
}
},
mounted() {
this.autoSelectIfOneVehicle();
}, },
async beforeRouteEnter(to, from, next) async beforeRouteEnter(to, from, next)
{ {
@ -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,