commit
20bf47ec3f
10 changed files with 241 additions and 19 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
const vehicleLookupAlertTypes = Object.freeze({
|
const vehicleLookupAlertTypes = Object.freeze({
|
||||||
NOT_FOUND: 'notFound',
|
NOT_FOUND: 'notFound',
|
||||||
NOT_MATCHED: 'notMatched',
|
NOT_MATCHED: 'notMatched',
|
||||||
|
TWO_IDENTICAL_YMM_MATCHED:'twoIdenticalYMMMatched'
|
||||||
});
|
});
|
||||||
|
|
||||||
export default vehicleLookupAlertTypes;
|
export default vehicleLookupAlertTypes;
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,43 @@ describe("address-lookup.vue", () => {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("if the address matches two identical YMM vehicles, then display Two Identical YMM Vehicle alert", async () => {
|
||||||
|
// Arrange
|
||||||
|
const mockRegistrationAddress = {
|
||||||
|
streetAddress: "1234 Main St",
|
||||||
|
city: "Columbus",
|
||||||
|
state: "OH",
|
||||||
|
zipCode: "43215",
|
||||||
|
};
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({
|
||||||
|
vinVehicles: [
|
||||||
|
{
|
||||||
|
vehicle: {
|
||||||
|
carId: "C00000",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
|
||||||
|
useMainStore().order.vehicle.carId = "CARID2";
|
||||||
|
|
||||||
|
await wrapper.setData({
|
||||||
|
customerQuestions: {
|
||||||
|
addressQuestions: mockRegistrationAddress,
|
||||||
|
},
|
||||||
|
isTwoIdenticalYMMVehicleFound:true,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper.findComponent({ ref: "alertMatchedTwoIdenticalYMMVehicle" }).isVisible()).toBe(
|
||||||
|
true
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test("if the looking up VIN by address is not allowed in the state selected display the Vin Lookup By HomeAddress Not Allowed Alert", async () => {
|
test("if the looking up VIN by address is not allowed in the state selected display the Vin Lookup By HomeAddress Not Allowed Alert", async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const mockRegistrationAddress = {
|
const mockRegistrationAddress = {
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,15 @@
|
||||||
:manualCopy="AlertMatchedDifferentVehicleBody"
|
:manualCopy="AlertMatchedDifferentVehicleBody"
|
||||||
alertClass="alert-warning"
|
alertClass="alert-warning"
|
||||||
v-bind:isDismissible="false" />
|
v-bind:isDismissible="false" />
|
||||||
|
<alert
|
||||||
|
ref="alertMatchedTwoIdenticalYMMVehicle"
|
||||||
|
v-if="displayMatchedTwoIdenticalYMMVehicleAlert"
|
||||||
|
class="mb-4"
|
||||||
|
cmsWidgetName="AlertMatchedTwoIdenticalYMMVehicleWidget"
|
||||||
|
:manualHeadline="AlertMatchedTwoIdenticalYMMVehicleHeader"
|
||||||
|
:manualCopy="AlertMatchedTwoIdenticalYMMVehicleBody"
|
||||||
|
alertClass="alert-warning"
|
||||||
|
v-bind:isDismissible="false" />
|
||||||
<alert
|
<alert
|
||||||
ref="alertVinLookupsByHomeAddressNotAllowed"
|
ref="alertVinLookupsByHomeAddressNotAllowed"
|
||||||
v-if="displayVinLookupByHomeAddressNotAllowedAlert"
|
v-if="displayVinLookupByHomeAddressNotAllowedAlert"
|
||||||
|
|
@ -101,10 +110,12 @@ export default {
|
||||||
displayVinNotFoundAlert: false,
|
displayVinNotFoundAlert: false,
|
||||||
displayMatchedDifferentVehicleAlert: false,
|
displayMatchedDifferentVehicleAlert: false,
|
||||||
displayVinLookupByHomeAddressNotAllowedAlert: false,
|
displayVinLookupByHomeAddressNotAllowedAlert: false,
|
||||||
|
displayMatchedTwoIdenticalYMMVehicleAlert: false,
|
||||||
previouslyEnteredCarId: "",
|
previouslyEnteredCarId: "",
|
||||||
isCarIdDifferent: false,
|
isCarIdDifferent: false,
|
||||||
isSelectedGlassAvailableForVehicle: true,
|
isSelectedGlassAvailableForVehicle: true,
|
||||||
customAlertData: {},
|
customAlertData: {},
|
||||||
|
forwardButtonCarStyle:"",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
@ -172,7 +183,13 @@ export default {
|
||||||
// Display Alert
|
// Display Alert
|
||||||
this.previouslyEnteredCarId = carFound.carId;
|
this.previouslyEnteredCarId = carFound.carId;
|
||||||
this.customAlertData.vehicleInfo = carFound;
|
this.customAlertData.vehicleInfo = carFound;
|
||||||
this.displayMatchedDifferentVehicleAlert = true;
|
if(this.isTwoIdenticalYMMVehicleFound){
|
||||||
|
this.displayMatchedTwoIdenticalYMMVehicleAlert = true;
|
||||||
|
this.forwardButtonCarStyle= carFound.style;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.displayMatchedDifferentVehicleAlert = true;
|
||||||
|
}
|
||||||
|
|
||||||
this.isSelectedGlassAvailableForVehicle = await isGlassAvailableForCarId(
|
this.isSelectedGlassAvailableForVehicle = await isGlassAvailableForCarId(
|
||||||
carFound.carId
|
carFound.carId
|
||||||
|
|
@ -180,7 +197,7 @@ export default {
|
||||||
|
|
||||||
// Update button "Continue with..."
|
// Update button "Continue with..."
|
||||||
this.$refs.siteFooter.updateButtonText(
|
this.$refs.siteFooter.updateButtonText(
|
||||||
`Continue with ${carFound.year} ${carFound.make} ${carFound.model} ${carFound.style}`
|
`Continue with ${carFound.year} ${carFound.make} ${carFound.model} ${this.forwardButtonCarStyle}`
|
||||||
);
|
);
|
||||||
return this.$refs.siteFooter.removeLoader();
|
return this.$refs.siteFooter.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
@ -277,14 +294,34 @@ export default {
|
||||||
).replaceAll("{custom:damage}", getDamageString());
|
).replaceAll("{custom:damage}", getDamageString());
|
||||||
},
|
},
|
||||||
AlertMatchedDifferentVehicleBody() {
|
AlertMatchedDifferentVehicleBody() {
|
||||||
|
const vinYmmFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model}`;
|
||||||
|
const vinYmmExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model}`;
|
||||||
|
|
||||||
|
return this.getCmsContent("AlertMatchedDifferentVehicleWidget", "BodyText")
|
||||||
|
.replaceAll("{custom:damage}", getDamageString())
|
||||||
|
.replaceAll("{custom:vinYmmFound}", vinYmmFound)
|
||||||
|
.replaceAll("{custom:vinYmmExpected}", vinYmmExpected);
|
||||||
|
},
|
||||||
|
AlertMatchedTwoIdenticalYMMVehicleHeader() {
|
||||||
|
return this.getCmsContent(
|
||||||
|
"AlertMatchedTwoIdenticalYMMVehicleWidget",
|
||||||
|
"HeadlineText"
|
||||||
|
).replaceAll("{custom:damage}", getDamageString());
|
||||||
|
},
|
||||||
|
AlertMatchedTwoIdenticalYMMVehicleBody() {
|
||||||
const vinYmmsFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model} ${this.customAlertData?.vehicleInfo?.style}`;
|
const vinYmmsFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model} ${this.customAlertData?.vehicleInfo?.style}`;
|
||||||
const vinYmmsExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model} ${this.mainStore.order.vehicle.style}`;
|
const vinYmmsExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model} ${this.mainStore.order.vehicle.style}`;
|
||||||
|
|
||||||
return this.getCmsContent("AlertMatchedDifferentVehicleWidget", "BodyText")
|
return this.getCmsContent("AlertMatchedTwoIdenticalYMMVehicleWidget", "BodyText")
|
||||||
.replaceAll("{custom:damage}", getDamageString())
|
.replaceAll("{custom:damage}", getDamageString())
|
||||||
.replaceAll("{custom:vinYmmsFound}", vinYmmsFound)
|
.replaceAll("{custom:vinYmmsFound}", vinYmmsFound)
|
||||||
.replaceAll("{custom:vinYmmsExpected}", vinYmmsExpected);
|
.replaceAll("{custom:vinYmmsExpected}", vinYmmsExpected);
|
||||||
},
|
},
|
||||||
|
isTwoIdenticalYMMVehicleFound(){
|
||||||
|
const vinYmmFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model}`;
|
||||||
|
const vinYmmExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model}`;
|
||||||
|
return(vinYmmFound.toLowerCase()==vinYmmExpected.toLowerCase());
|
||||||
|
}
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
customerQuestions: {
|
customerQuestions: {
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,30 @@ describe("license-plate-lookup.vue", () => {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("If license plate matches two identical YMM vehicles, display alertMatchedTwoIdenticalYMMVehicle", async () => {
|
||||||
|
// Arrange
|
||||||
|
const mockRegistrationLicensePlate = {
|
||||||
|
licensePlate: "UTN990",
|
||||||
|
};
|
||||||
|
|
||||||
|
const { wrapper } = setupMocks({});
|
||||||
|
|
||||||
|
useMainStore().order.vehicle.carId = "TESTCARID";
|
||||||
|
|
||||||
|
await wrapper.setData({
|
||||||
|
licensePlate: mockRegistrationLicensePlate,
|
||||||
|
isTwoIdenticalYMMVehicleFound:true,
|
||||||
|
});
|
||||||
|
|
||||||
|
// Act
|
||||||
|
await wrapper.vm.forwardButtonAction();
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
expect(wrapper.findComponent({ ref: "alertMatchedTwoIdenticalYMMVehicle" }).isVisible()).toBe(
|
||||||
|
true
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
test("If no vehicles found, display VinNotFound alert", async () => {
|
test("If no vehicles found, display VinNotFound alert", async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const mockRegistrationLicensePlate = {
|
const mockRegistrationLicensePlate = {
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,15 @@
|
||||||
:manualCopy="AlertMatchedDifferentVehicleBody"
|
:manualCopy="AlertMatchedDifferentVehicleBody"
|
||||||
alertClass="alert-warning"
|
alertClass="alert-warning"
|
||||||
v-bind:isDismissible="false" />
|
v-bind:isDismissible="false" />
|
||||||
|
<alert
|
||||||
|
ref="alertMatchedTwoIdenticalYMMVehicle"
|
||||||
|
v-if="displayMatchedTwoIdenticalYMMVehicleAlert"
|
||||||
|
class="mb-4"
|
||||||
|
cmsWidgetName="AlertMatchedTwoIdenticalYMMVehicleWidget"
|
||||||
|
:manualHeadline="AlertMatchedTwoIdenticalYMMVehicleHeader"
|
||||||
|
:manualCopy="AlertMatchedTwoIdenticalYMMVehicleBody"
|
||||||
|
alertClass="alert-warning"
|
||||||
|
v-bind:isDismissible="false" />
|
||||||
<textboxQuestion
|
<textboxQuestion
|
||||||
cmsWidgetName="LicensePlateNumberQuestionWidget"
|
cmsWidgetName="LicensePlateNumberQuestionWidget"
|
||||||
v-model="licensePlate"
|
v-model="licensePlate"
|
||||||
|
|
@ -112,10 +121,12 @@ export default {
|
||||||
licenseState: useMainStore().order.customer.address.state,
|
licenseState: useMainStore().order.customer.address.state,
|
||||||
displayVinNotFoundAlert: false,
|
displayVinNotFoundAlert: false,
|
||||||
displayMatchedDifferentVehicleAlert: false,
|
displayMatchedDifferentVehicleAlert: false,
|
||||||
|
displayMatchedTwoIdenticalYMMVehicleAlert: false,
|
||||||
previouslyEnteredCarId: "",
|
previouslyEnteredCarId: "",
|
||||||
isCarIdDifferent: false,
|
isCarIdDifferent: false,
|
||||||
customAlertData: {},
|
customAlertData: {},
|
||||||
isSelectedGlassAvailableForVehicle: true,
|
isSelectedGlassAvailableForVehicle: true,
|
||||||
|
forwardButtonCarStyle:"",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
@ -178,15 +189,21 @@ export default {
|
||||||
// Display Alert
|
// Display Alert
|
||||||
this.previouslyEnteredCarId = vehicleFromLookup.carId;
|
this.previouslyEnteredCarId = vehicleFromLookup.carId;
|
||||||
this.customAlertData.vehicleInfo = vehicleFromLookup;
|
this.customAlertData.vehicleInfo = vehicleFromLookup;
|
||||||
this.displayMatchedDifferentVehicleAlert = true;
|
|
||||||
|
if(this.isTwoIdenticalYMMVehicleFound){
|
||||||
|
this.displayMatchedTwoIdenticalYMMVehicleAlert = true;
|
||||||
|
this.forwardButtonCarStyle= vehicleFromLookup.style;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.displayMatchedDifferentVehicleAlert = true;
|
||||||
|
}
|
||||||
|
|
||||||
this.isSelectedGlassAvailableForVehicle = await isGlassAvailableForCarId(
|
this.isSelectedGlassAvailableForVehicle = await isGlassAvailableForCarId(
|
||||||
vehicleFromLookup.carId
|
vehicleFromLookup.carId
|
||||||
);
|
);
|
||||||
|
|
||||||
// Update button "Continue with..."
|
// Update button "Continue with..."
|
||||||
this.$refs.siteFooter.updateButtonText(
|
this.$refs.siteFooter.updateButtonText(`Continue with ${vehicleFromLookup.year} ${vehicleFromLookup.make} ${vehicleFromLookup.model} ${this.forwardButtonCarStyle}`);
|
||||||
`Continue with ${vehicleFromLookup.year} ${vehicleFromLookup.make} ${vehicleFromLookup.model} ${vehicleFromLookup.style}`
|
|
||||||
);
|
|
||||||
return this.$refs.siteFooter.removeLoader();
|
return this.$refs.siteFooter.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -236,14 +253,34 @@ export default {
|
||||||
).replaceAll("{custom:damage}", getDamageString());
|
).replaceAll("{custom:damage}", getDamageString());
|
||||||
},
|
},
|
||||||
AlertMatchedDifferentVehicleBody() {
|
AlertMatchedDifferentVehicleBody() {
|
||||||
|
const vinYmmFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model}`;
|
||||||
|
const vinYmmExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model}`;
|
||||||
|
|
||||||
|
return this.getCmsContent("AlertMatchedDifferentVehicleWidget", "BodyText")
|
||||||
|
.replaceAll("{custom:damage}", getDamageString())
|
||||||
|
.replaceAll("{custom:vinYmmFound}", vinYmmFound)
|
||||||
|
.replaceAll("{custom:vinYmmExpected}", vinYmmExpected);
|
||||||
|
},
|
||||||
|
AlertMatchedTwoIdenticalYMMVehicleHeader() {
|
||||||
|
return this.getCmsContent(
|
||||||
|
"AlertMatchedTwoIdenticalYMMVehicleWidget",
|
||||||
|
"HeadlineText"
|
||||||
|
).replaceAll("{custom:damage}", getDamageString());
|
||||||
|
},
|
||||||
|
AlertMatchedTwoIdenticalYMMVehicleBody() {
|
||||||
const vinYmmsFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model} ${this.customAlertData?.vehicleInfo?.style}`;
|
const vinYmmsFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model} ${this.customAlertData?.vehicleInfo?.style}`;
|
||||||
const vinYmmsExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model} ${this.mainStore.order.vehicle.style}`;
|
const vinYmmsExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model} ${this.mainStore.order.vehicle.style}`;
|
||||||
|
|
||||||
return this.getCmsContent("AlertMatchedDifferentVehicleWidget", "BodyText")
|
return this.getCmsContent("AlertMatchedTwoIdenticalYMMVehicleWidget", "BodyText")
|
||||||
.replaceAll("{custom:damage}", getDamageString())
|
.replaceAll("{custom:damage}", getDamageString())
|
||||||
.replaceAll("{custom:vinYmmsFound}", vinYmmsFound)
|
.replaceAll("{custom:vinYmmsFound}", vinYmmsFound)
|
||||||
.replaceAll("{custom:vinYmmsExpected}", vinYmmsExpected);
|
.replaceAll("{custom:vinYmmsExpected}", vinYmmsExpected);
|
||||||
},
|
},
|
||||||
|
isTwoIdenticalYMMVehicleFound(){
|
||||||
|
const vinYmmFound = `${this.customAlertData?.vehicleInfo?.year} ${this.customAlertData?.vehicleInfo?.make} ${this.customAlertData?.vehicleInfo?.model}`;
|
||||||
|
const vinYmmExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model}`;
|
||||||
|
return(vinYmmFound.toLowerCase()==vinYmmExpected.toLowerCase());
|
||||||
|
},
|
||||||
stateOptions: {
|
stateOptions: {
|
||||||
get: function () {
|
get: function () {
|
||||||
return states;
|
return states;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
<template>
|
||||||
|
<alert
|
||||||
|
alertClass="alert-warning"
|
||||||
|
cmsWidgetName="AlertMatchedTwoIdenticalYMMVehicleWidget"
|
||||||
|
:manualCopy="body"
|
||||||
|
:manualHeadline="header"
|
||||||
|
aria-label="two-identical-ymm-vehicle-alert"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import { getDamageString } from '@/helpers/damage-helper';
|
||||||
|
|
||||||
|
import alert from '@/ux-components/alert/alert.vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'two-identical-ymm-vehicle-alert',
|
||||||
|
components: {
|
||||||
|
alert,
|
||||||
|
},
|
||||||
|
inject: ['vehicleFromLookup'],
|
||||||
|
computed: {
|
||||||
|
header() {
|
||||||
|
return (
|
||||||
|
this.getCmsContent('AlertMatchedTwoIdenticalYMMVehicleWidget', 'HeadlineText')
|
||||||
|
.replaceAll('{custom:damage}', getDamageString())
|
||||||
|
);
|
||||||
|
},
|
||||||
|
body() {
|
||||||
|
let year = '';
|
||||||
|
let make = '';
|
||||||
|
let model = '';
|
||||||
|
let style = '';
|
||||||
|
|
||||||
|
if (this.vehicleFromLookup) {
|
||||||
|
year = this.vehicleFromLookup.year;
|
||||||
|
make = this.vehicleFromLookup.make;
|
||||||
|
model = this.vehicleFromLookup.model;
|
||||||
|
style = this.vehicleFromLookup.style;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
this.getCmsContent('AlertMatchedTwoIdenticalYMMVehicleWidget', 'BodyText')
|
||||||
|
.replaceAll('{custom:damage}', getDamageString())
|
||||||
|
.replaceAll('{custom:vinlookupYear}', year)
|
||||||
|
.replaceAll('{custom:vinlookupMake}', make)
|
||||||
|
.replaceAll('{custom:vinlookupModel}', model)
|
||||||
|
.replaceAll('{custom:vinlookupStyle}', style)
|
||||||
|
);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
@ -29,13 +29,11 @@ export default {
|
||||||
let year = '';
|
let year = '';
|
||||||
let make = '';
|
let make = '';
|
||||||
let model = '';
|
let model = '';
|
||||||
let style = '';
|
|
||||||
|
|
||||||
if (this.vehicleFromLookup) {
|
if (this.vehicleFromLookup) {
|
||||||
year = this.vehicleFromLookup.year;
|
year = this.vehicleFromLookup.year;
|
||||||
make = this.vehicleFromLookup.make;
|
make = this.vehicleFromLookup.make;
|
||||||
model = this.vehicleFromLookup.model;
|
model = this.vehicleFromLookup.model;
|
||||||
style = this.vehicleFromLookup.style;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -44,7 +42,6 @@ export default {
|
||||||
.replaceAll('{custom:vinlookupYear}', year)
|
.replaceAll('{custom:vinlookupYear}', year)
|
||||||
.replaceAll('{custom:vinlookupMake}', make)
|
.replaceAll('{custom:vinlookupMake}', make)
|
||||||
.replaceAll('{custom:vinlookupModel}', model)
|
.replaceAll('{custom:vinlookupModel}', model)
|
||||||
.replaceAll('{custom:vinlookupStyle}', style)
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -54,4 +54,18 @@ describe('vin-lookup-alerts.vue', () => {
|
||||||
expect(vehicleNotFoundAlert).toEqual(null);
|
expect(vehicleNotFoundAlert).toEqual(null);
|
||||||
expect(vehicleNotMatchedAlert).toBeVisible();
|
expect(vehicleNotMatchedAlert).toBeVisible();
|
||||||
});
|
});
|
||||||
|
test('TwoIdenticalYMMVehicleAlert is displayed on the screen', () => {
|
||||||
|
getDamageString.mockImplementation(() => 'Mock Damage String');
|
||||||
|
mountOptions.props = {
|
||||||
|
activeAlertType: vehicleLookupAlertTypes.TWO_IDENTICAL_YMM_MATCHED,
|
||||||
|
};
|
||||||
|
mountOptions.global.provide = {
|
||||||
|
vehicleFromLookup: {},
|
||||||
|
};
|
||||||
|
|
||||||
|
const { queryByRole } = render(VinLookupAlertsComponent, mountOptions);
|
||||||
|
const twoIdenticalYMMVehicleAlert = queryByRole('alert', { name: 'two-identical-ymm-vehicle-alert' });
|
||||||
|
|
||||||
|
expect(twoIdenticalYMMVehicleAlert).toBeVisible();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,9 @@
|
||||||
<vehicleNotFoundAlert
|
<vehicleNotFoundAlert
|
||||||
v-if="isVehicleNotFoundVisible"
|
v-if="isVehicleNotFoundVisible"
|
||||||
/>
|
/>
|
||||||
|
<twoIdenticalYMMVehicleAlert
|
||||||
|
v-if="isTwoIdenticalYMMVehicleFoundVisible"
|
||||||
|
/>
|
||||||
<vehicleNotMatchedAlert
|
<vehicleNotMatchedAlert
|
||||||
v-else-if="isVehicleNotMatchedVisible"
|
v-else-if="isVehicleNotMatchedVisible"
|
||||||
/>
|
/>
|
||||||
|
|
@ -13,14 +16,17 @@
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import vehicleLookupAlertTypes from '@/constants/vehicle-lookup-alert-types';
|
import vehicleLookupAlertTypes from '@/constants/vehicle-lookup-alert-types';
|
||||||
import vehicleNotFoundAlert from './vehicle-not-found-alert/vehicle-not-found-alert.vue';
|
import vehicleNotFoundAlert from '@/layouts/vin-lookup/vin-lookup-alerts/vehicle-not-found-alert/vehicle-not-found-alert';
|
||||||
import vehicleNotMatchedAlert from './vehicle-not-matched-alert/vehicle-not-matched-alert.vue';
|
import vehicleNotMatchedAlert from '@/layouts/vin-lookup/vin-lookup-alerts/vehicle-not-matched-alert/vehicle-not-matched-alert';
|
||||||
|
import twoIdenticalYMMVehicleAlert from '@/layouts/vin-lookup/vin-lookup-alerts/two-identical-ymm-vehicle-alert/two-identical-ymm-vehicle-alert'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'vin-lookup-alerts',
|
name: 'vin-lookup-alerts',
|
||||||
components: {
|
components: {
|
||||||
vehicleNotFoundAlert,
|
vehicleNotFoundAlert,
|
||||||
vehicleNotMatchedAlert,
|
vehicleNotMatchedAlert,
|
||||||
|
twoIdenticalYMMVehicleAlert,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
activeAlertType: {
|
activeAlertType: {
|
||||||
|
|
@ -39,6 +45,9 @@ export default {
|
||||||
isVehicleNotMatchedVisible() {
|
isVehicleNotMatchedVisible() {
|
||||||
return this.activeAlertType === vehicleLookupAlertTypes.NOT_MATCHED;
|
return this.activeAlertType === vehicleLookupAlertTypes.NOT_MATCHED;
|
||||||
},
|
},
|
||||||
|
isTwoIdenticalYMMVehicleFoundVisible(){
|
||||||
|
return this.activeAlertType === vehicleLookupAlertTypes.TWO_IDENTICAL_YMM_MATCHED;
|
||||||
|
},
|
||||||
wrapperCssClass() {
|
wrapperCssClass() {
|
||||||
return {
|
return {
|
||||||
'mb-5': this.activeAlertType !== null,
|
'mb-5': this.activeAlertType !== null,
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ export default {
|
||||||
needToLookupVehicle: true,
|
needToLookupVehicle: true,
|
||||||
vehicleFromLookup: null,
|
vehicleFromLookup: null,
|
||||||
vin: null,
|
vin: null,
|
||||||
|
forwardButtonCarStyle:"",
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
provide() {
|
provide() {
|
||||||
|
|
@ -116,6 +117,11 @@ export default {
|
||||||
this.vehicleFromLookup !== null
|
this.vehicleFromLookup !== null
|
||||||
&& this.vehicleFromLookup.carId !== this.mainStore.vehicle.carId
|
&& this.vehicleFromLookup.carId !== this.mainStore.vehicle.carId
|
||||||
);
|
);
|
||||||
|
},
|
||||||
|
isTwoIdenticalYMMVehicleFound(){
|
||||||
|
const vinYmmFound = `${this.vehicleFromLookup.year} ${this.vehicleFromLookup.make} ${this.vehicleFromLookup.model}`;
|
||||||
|
const vinYmmExpected = `${this.mainStore.order.vehicle.year} ${this.mainStore.order.vehicle.make} ${this.mainStore.order.vehicle.model}`;
|
||||||
|
return(vinYmmFound.toLowerCase()==vinYmmExpected.toLowerCase());
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
@ -153,9 +159,16 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.needToLookupVehicle && this.isCarIdDifferentFromTheStore) {
|
if (this.needToLookupVehicle && this.isCarIdDifferentFromTheStore) {
|
||||||
this.activeVehicleLookupAlertType = vehicleLookupAlertTypes.NOT_MATCHED;
|
if(this.isTwoIdenticalYMMVehicleFound){
|
||||||
|
this.activeVehicleLookupAlertType = vehicleLookupAlertTypes.TWO_IDENTICAL_YMM_MATCHED;
|
||||||
|
this.forwardButtonCarStyle = this.vehicleFromLookup.style;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
this.activeVehicleLookupAlertType = vehicleLookupAlertTypes.NOT_MATCHED;
|
||||||
|
}
|
||||||
|
|
||||||
const vehicleYearMakeModelStyle = `${this.vehicleFromLookup.year} ${this.vehicleFromLookup.make} ${this.vehicleFromLookup.model} ${this.vehicleFromLookup.style}`;
|
|
||||||
|
const vehicleYearMakeModelStyle = `${this.vehicleFromLookup.year} ${this.vehicleFromLookup.make} ${this.vehicleFromLookup.model} ${this.forwardButtonCarStyle}`;
|
||||||
this.$refs.siteFooter.updateButtonText(`Continue with ${vehicleYearMakeModelStyle}`);
|
this.$refs.siteFooter.updateButtonText(`Continue with ${vehicleYearMakeModelStyle}`);
|
||||||
this.$refs.siteFooter.removeLoader();
|
this.$refs.siteFooter.removeLoader();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue