Merge branch 'develop' into feature/jzimmerman/INSR-8742

This commit is contained in:
Jeremy-Z 2026-03-16 12:19:56 -04:00
commit efee204fc8
18 changed files with 61 additions and 405 deletions

View file

@ -63,7 +63,7 @@ const bailoutMessage = Object.freeze({
}), }),
HeavyTruckVehicle: (carId) => ({ HeavyTruckVehicle: (carId) => ({
code: bailoutCode.HeavyTruckVehicle, code: bailoutCode.HeavyTruckVehicle,
message: `User selected a heavy truck vehicle. Car ID: ${carId}` message: `User selected a big truck that Safelite cannot service. Car ID: ${carId}`
}), }),
NoPartsAvailable: () => ({ NoPartsAvailable: () => ({
code: bailoutCode.NoPartsAvailable, code: bailoutCode.NoPartsAvailable,

View file

@ -1,9 +1,9 @@
const vehicleLookupAlertTypes = Object.freeze({ const vehicleLookupAlertTypes = Object.freeze({
NOT_FOUND: 'notFound', NOT_FOUND: 'notFound',
NOT_MATCHED: 'notMatched', NOT_MATCHED: 'notMatched',
NO_SERVICE: 'noService',
TWO_IDENTICAL_YMM_MATCHED: 'twoIdenticalYMMMatched', TWO_IDENTICAL_YMM_MATCHED: 'twoIdenticalYMMMatched',
PERFECT_MATCH: 'perfectMatch', PERFECT_MATCH: 'perfectMatch'
NO_SERVICE: 'noService'
}); });
export default vehicleLookupAlertTypes; export default vehicleLookupAlertTypes;

View file

@ -12,6 +12,8 @@ function canBailoutNavigateBack() {
case BailoutCode.VehicleNotFound: case BailoutCode.VehicleNotFound:
case BailoutCode.RequestCallback: case BailoutCode.RequestCallback:
case BailoutCode.TPANotEnabled: case BailoutCode.TPANotEnabled:
case BailoutCode.CoverageCancelledByUser:
case BailoutCode.HeavyTruckVehicle:
return true; return true;
default: default:

View file

@ -466,76 +466,5 @@ describe('address-lookup.vue', () => {
// Assert // Assert
expect(wrapper.vm.navigateForwardWithSingleCarMatch).toHaveBeenCalledTimes(1); expect(wrapper.vm.navigateForwardWithSingleCarMatch).toHaveBeenCalledTimes(1);
}); });
test('selected vehicle is a non-serviceable big truck, display no service alert', async () => {
// Arrange
const mockRegistrationAddress = {
streetAddress: '1234 Main St',
city: 'Columbus',
state: 'OH',
zipCode: '43215'
};
const { wrapper } = setupMocks({
vinVehicles: [
{
vehicle: {
carId: 'BIGTRUCKCARID',
isBigTruck: true,
canSafeliteService: false
}
}
]
});
useMainStore().order.vehicle.carId = 'BIGTRUCKCARID';
await wrapper.setData({
customerQuestions: {
addressQuestions: mockRegistrationAddress
}
});
// Act
await wrapper.vm.forwardButtonAction();
// Assert
expect(wrapper.findComponent({ ref: 'alertNoService' }).isVisible()).toBe(true);
});
test('selected vehicle is a serviceable big truck, do not display no service alert', async () => {
// Arrange
const mockRegistrationAddress = {
streetAddress: '1234 Main St',
city: 'Columbus',
state: 'OH',
zipCode: '43215'
};
const { wrapper } = setupMocks({
vinVehicles: [
{
vehicle: {
carId: 'BIGTRUCKCARID2',
isBigTruck: true,
canSafeliteService: true
}
}
]
});
useMainStore().order.vehicle.carId = 'BIGTRUCKCARID2';
await wrapper.setData({
customerQuestions: {
addressQuestions: mockRegistrationAddress
}
});
// Act
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.findComponent({ ref: 'alertNoService' }).exists()).toBe(false);
});
}); });
}); });

View file

@ -55,14 +55,6 @@
alertClass="alert-danger" alertClass="alert-danger"
:isCollapsible="true" :isCollapsible="true"
:isDismissible="false" /> :isDismissible="false" />
<alert
v-if="displayNoServiceAlert"
ref="alertNoService"
class="mt-5"
cmsWidgetName="AlertNoServiceWidget"
alertClass="alert-danger"
:isCollapsible="true"
:isDismissable="false" />
<siteFooter <siteFooter
ref="siteFooter" ref="siteFooter"
class="mt-5" class="mt-5"
@ -142,8 +134,7 @@ export default {
isCarIdDifferent: false, isCarIdDifferent: false,
isSelectedGlassAvailableForVehicle: true, isSelectedGlassAvailableForVehicle: true,
customAlertData: {}, customAlertData: {},
forwardButtonCarStyle: '', forwardButtonCarStyle: ''
displayNoServiceAlert: false
}; };
}, },
computed: { computed: {
@ -261,9 +252,8 @@ export default {
const carFound = carsFound[0].vehicle; const carFound = carsFound[0].vehicle;
if (!carFound.canSafeliteService) { if (!carFound.canSafeliteService) {
this.displayNoServiceAlert = true; this.mainStore.setBailout(bailoutMessage.HeavyTruckVehicle(carFound.carId));
showIssLoadingModal(false); return this.$router.push({ name: 'bailout' });
return this.$refs.siteFooter.disableForwardButton();
} }
this.isCarIdDifferent = carFound.carId !== useMainStore().order.vehicle.carId; this.isCarIdDifferent = carFound.carId !== useMainStore().order.vehicle.carId;

View file

@ -247,94 +247,4 @@ describe('address-vehicles.vue', () => {
// Assert // Assert
expect(arePagePrerequisitesValid).toBe(true); expect(arePagePrerequisitesValid).toBe(true);
}); });
test('selected vehicle is a non-serviceable big truck, display no service alert', async () => {
// Arrange
const { wrapper } = setupMocks({});
useMainStore().order.vehicle.carId = 'BIGTRUCKCARID';
useMainStore().applicationUser = {
pageData: {
'address-vehicles':
[
{
vehicle: {
carId: 'BIGTRUCKCARID',
make: 'Isuzu',
model: 'Reach',
style: 'Step Van',
year: 2016,
isBigTruck: true,
canSafeliteService: false
},
vin: 'BIGTRUCKVIN'
}
]
}
};
await wrapper.setData({
selectedVehicleVin: 'BIGTRUCKVIN',
previouslyEnteredCarId: 'BIGTRUCKCARID'
});
wrapper.vm.selectedVehicle = {
vin: 'BIGTRUCKVIN',
vehicle: {
carId: 'BIGTRUCKCARID',
isBigTruck: true,
canSafeliteService: false
}
};
// Act
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.findComponent({ ref: 'AlertNoService' }).isVisible()).toBe(true);
});
test('selected vehicle is a serviceable big truck, do not display no service alert', async () => {
// Arrange
const { wrapper } = setupMocks({});
useMainStore().order.vehicle.carId = 'BIGTRUCKCARID2';
useMainStore().applicationUser = {
pageData: {
'address-vehicles':
[
{
vehicle: {
carId: 'BIGTRUCKCARID2',
make: 'Mack',
model: 'Terrapro',
style: 'Cabover',
year: 2024,
isBigTruck: true,
canSafeliteService: true
},
vin: 'BIGTRUCKVIN2'
}
]
}
};
await wrapper.setData({
selectedVehicleVin: 'BIGTRUCKVIN2',
previouslyEnteredCarId: 'BIGTRUCKCARID2'
});
wrapper.vm.selectedVehicle = {
vin: 'BIGTRUCKVIN2',
vehicle: {
carId: 'BIGTRUCKCARID2',
isBigTruck: true,
canSafeliteService: true
}
};
// Act
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.findComponent({ ref: 'AlertNoService' }).exists()).toBe(false);
});
}); });

View file

@ -204,7 +204,9 @@ export default {
methods: { methods: {
backButtonAction() { backButtonAction() {
// route to move backwards // route to move backwards
this.mainStore.resetBailout(); if (this.bailout.bailoutCode !== BailoutCode.HeavyTruckVehicle) {
this.mainStore.resetBailout();
}
this.$router.navigateWithSpinner( this.$router.navigateWithSpinner(
this.navigationScenarios.CLICKED_BACK_PREVIOUS, this.navigationScenarios.CLICKED_BACK_PREVIOUS,
this.$route this.$route

View file

@ -151,68 +151,6 @@ describe('license-plate-lookup.vue', () => {
// Assert // Assert
expect(wrapper.findComponent({ ref: 'alertVinNotFound' }).isVisible()).toBe(true); expect(wrapper.findComponent({ ref: 'alertVinNotFound' }).isVisible()).toBe(true);
}); });
test('non-serviceable big truck found, display NoServiceAlert', async () => {
// Arrange
const mockRegistrationLicensePlate = {
licensePlate: 'BIGTRUCKTEST'
};
const { wrapper } = setupMocks({
lookupVinByPlateResponse: {
vin: 'BIGTRUCKVIN',
vehicle: {
carId: 'BIGTRUCKTESTCARID',
isBigTruck: true,
canSafeliteService: false
}
}
});
useMainStore().order.vehicle.carId = 'BIGTRUCKTESTCARID';
await wrapper.setData({
licensePlate: mockRegistrationLicensePlate
});
wrapper.vm.navigateForward = jest.fn();
// Act
await wrapper.vm.forwardButtonAction();
// Assert
expect(wrapper.findComponent({ ref: 'alertNoService' }).isVisible()).toBe(true);
});
test('serviceable big truck found, do not display NoServiceAlert', async () => {
// Arrange
const mockRegistrationLicensePlate = {
licensePlate: 'BIGTRUCKTEST2'
};
const { wrapper } = setupMocks({
lookupVinByPlateResponse: {
vin: 'BIGTRUCKVIN2',
vehicle: {
carId: 'BIGTRUCKTESTCARID2',
isBigTruck: true,
canSafeliteService: true
}
}
});
useMainStore().order.vehicle.carId = 'BIGTRUCKTESTCARID2';
await wrapper.setData({
licensePlate: mockRegistrationLicensePlate
});
wrapper.vm.navigateForward = jest.fn();
// Act
await wrapper.vm.forwardButtonAction();
// Assert
expect(wrapper.findComponent({ ref: 'alertNoService' }).exists()).toBe(false);
});
}); });
describe('navigation', () => { describe('navigation', () => {

View file

@ -59,13 +59,6 @@
:manualCopy="AlertMatchedTwoIdenticalYMMVehicleBody" :manualCopy="AlertMatchedTwoIdenticalYMMVehicleBody"
alertClass="alert-warning" alertClass="alert-warning"
:isDismissible="false" /> :isDismissible="false" />
<alert
v-if="displayNoServiceAlert"
ref="alertNoService"
class="mt-5"
cmsWidgetName="AlertNoServiceWidget"
alertClass="alert-danger"
:isDismissable="false" />
<siteFooter <siteFooter
ref="siteFooter" ref="siteFooter"
class="mt-5" class="mt-5"
@ -156,8 +149,7 @@ export default {
isCarIdDifferent: false, isCarIdDifferent: false,
customAlertData: {}, customAlertData: {},
isSelectedGlassAvailableForVehicle: true, isSelectedGlassAvailableForVehicle: true,
forwardButtonCarStyle: '', forwardButtonCarStyle: ''
displayNoServiceAlert: false
}; };
}, },
computed: { computed: {
@ -265,9 +257,11 @@ export default {
// Vehicle found from VIN lookup // Vehicle found from VIN lookup
const vehicleFromLookup = vinLookupResponse.data.vehicle; const vehicleFromLookup = vinLookupResponse.data.vehicle;
if (!vehicleFromLookup.canSafeliteService) { if (!vehicleFromLookup.canSafeliteService) {
this.displayNoServiceAlert = true; this.mainStore.setBailout({
showIssLoadingModal(false); type: 'HeavyTruckVehicle',
return this.$refs.siteFooter.disableForwardButton(); carId: vehicleFromLookup.carId
});
return this.navigateForward();
} }
// Check if the CarId has changed // Check if the CarId has changed
@ -326,7 +320,6 @@ export default {
resetWarningsAndErrors() { resetWarningsAndErrors() {
this.displayVinNotFoundAlert = false; this.displayVinNotFoundAlert = false;
this.displayMatchedDifferentVehicleAlert = false; this.displayMatchedDifferentVehicleAlert = false;
this.displayNoServiceAlert = false;
} }
} }
}; };

View file

@ -10,8 +10,6 @@ import { getRandomString, getRandomInt } from '@/helpers/data-generation';
import endorsementOptions from '@/constants/endorsement-options'; import endorsementOptions from '@/constants/endorsement-options';
import { createTestingPinia } from '@pinia/testing'; import { createTestingPinia } from '@pinia/testing';
import vehicleSelectionOptions from '@/constants/vehicle-selection-options'; import vehicleSelectionOptions from '@/constants/vehicle-selection-options';
import bailoutCode from '@/constants/bailoutCode';
import bailoutMessage from '@/constants/bailoutMessage';
import issPageValues from '@/router/router-constants/issPage-values'; import issPageValues from '@/router/router-constants/issPage-values';
// Mock fetchCmsContentForPage // Mock fetchCmsContentForPage
@ -720,54 +718,4 @@ describe('policy-vehicles.vue', () => {
// Assert // Assert
expect(wrapper.vm.selectedVehicleVin).toBe(vin); expect(wrapper.vm.selectedVehicleVin).toBe(vin);
}); });
test('selected vehicle is a non-serviceable big truck, display no service alert', async () => {
// Arrange
const vin = getRandomString(17, 17);
const policyVehicle = {
vin,
isBigTruck: true,
canSafeliteService: false
};
const { wrapper } = setupMocks({});
await wrapper.setData({
selectedVehicleVin: vin,
selectedPolicyVehicle: policyVehicle,
policyVehicles: [policyVehicle],
policyVinFound: true
});
wrapper.vm.displayNoServiceAlert = true;
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.findComponent({ ref: 'AlertNoService' }).isVisible()).toBe(true);
});
test('selected vehicle is a serviceable big truck, do not display no service alert', async () => {
// Arrange
const vin = getRandomString(17, 17);
const policyVehicle = {
vin,
isBigTruck: true,
canSafeliteService: true
};
const { wrapper } = setupMocks({});
await wrapper.setData({
selectedVehicleVin: vin,
selectedPolicyVehicle: policyVehicle,
policyVehicles: [policyVehicle],
policyVinFound: true
});
wrapper.vm.displayNoServiceAlert = false;
await wrapper.vm.$nextTick();
// Assert
expect(wrapper.findComponent({ ref: 'AlertNoService' }).exists()).toBe(false);
});
}); });

View file

@ -27,17 +27,10 @@
buttonText="Add another vehicle" buttonText="Add another vehicle"
class="w-100" class="w-100"
@clickEvent="addAnotherVehicle" /> @clickEvent="addAnotherVehicle" />
<alert
v-if="displayNoServiceAlert"
ref="AlertNoService"
class="mt-3"
cmsWidgetName="AlertVehicleSelection"
alertClass="alert-danger"
:isDismissable="false" />
<siteFooter <siteFooter
ref="siteFooter" ref="siteFooter"
cmsWidgetName="SiteFooterWidget" cmsWidgetName="SiteFooterWidget"
:isForwardActionDisabled="!meta.valid || displayNoServiceAlert" :isForwardActionDisabled="!meta.valid"
@ForwardClicked="forwardButtonAction" @ForwardClicked="forwardButtonAction"
@backClicked="backButtonAction" /> @backClicked="backButtonAction" />
</div> </div>
@ -67,10 +60,10 @@ import {
} from '@/helpers/policy-vehicle-helper'; } from '@/helpers/policy-vehicle-helper';
import coverageType from '@/constants/coverage-type'; import coverageType from '@/constants/coverage-type';
import coverageStatuses from '@/constants/coverage-statuses'; import coverageStatuses from '@/constants/coverage-statuses';
import alert from '@/ux-components/alert/alert.vue';
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue'; import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
import buttonMain from '@/ux-components/button-main/button-main.vue'; import buttonMain from '@/ux-components/button-main/button-main.vue';
import { buttonVariants } from '@/constants/component-variants'; import { buttonVariants } from '@/constants/component-variants';
import bailoutMessage from '@/constants/bailoutMessage';
export default { export default {
name: 'policy-vehicles', name: 'policy-vehicles',
@ -80,8 +73,7 @@ export default {
siteHeader, siteHeader,
siteFooter, siteFooter,
policyVehiclesQuestion, policyVehiclesQuestion,
Form, Form
alert
}, },
mixins: [BaseFormMixin], mixins: [BaseFormMixin],
async beforeRouteEnter(to, from, next) { async beforeRouteEnter(to, from, next) {
@ -103,7 +95,6 @@ export default {
rules: { rules: {
optionRequired: globalRules.OPTION_REQUIRED optionRequired: globalRules.OPTION_REQUIRED
}, },
displayNoServiceAlert: false,
buttonVariants buttonVariants
}; };
}, },
@ -147,7 +138,6 @@ export default {
}, },
watch: { watch: {
async selectedVehicleVin(value) { async selectedVehicleVin(value) {
this.displayNoServiceAlert = false;
if (value === vehicleSelectionOptions.VEHICLE_NOT_LISTED) { if (value === vehicleSelectionOptions.VEHICLE_NOT_LISTED) {
// clear previously selected vehicle and image // clear previously selected vehicle and image
this.mainStore.resetVehicleState(); this.mainStore.resetVehicleState();
@ -157,10 +147,6 @@ export default {
// get vehicle details from selected VIN // get vehicle details from selected VIN
try { try {
const vehicle = await this.lookupVehicleByVin(value); const vehicle = await this.lookupVehicleByVin(value);
if (!vehicle?.data.canSafeliteService) {
this.displayNoServiceAlert = true;
return;
}
if (vehicle) { if (vehicle) {
// save selected vehicle to the store // save selected vehicle to the store
useMainStore().updateVehicle({ useMainStore().updateVehicle({
@ -201,6 +187,11 @@ export default {
try { try {
const vehicleLookupResponse = await this.lookupVehicleByVin(this.selectedVehicleVin); const vehicleLookupResponse = await this.lookupVehicleByVin(this.selectedVehicleVin);
if (!vehicleLookupResponse?.data.canSafeliteService) {
this.mainStore.setBailout(
bailoutMessage.HeavyTruckVehicle(vehicleLookupResponse?.data?.carId)
);
}
useMainStore().updateVehicle({ useMainStore().updateVehicle({
...vehicleLookupResponse.data, ...vehicleLookupResponse.data,
policyVehicleId: vehicle.id, policyVehicleId: vehicle.id,
@ -242,6 +233,11 @@ export default {
{}, {},
{} {}
); );
} else if (this.mainStore.isBailout) {
this.$router.navigate(
this.navigationScenarios.BAILOUT,
this.$route
);
} else if (this.endorsementsForSelectedVehicle?.length > 0 } else if (this.endorsementsForSelectedVehicle?.length > 0
&& (this.endorsementsForSelectedVehicle?.includes(endorsementOptions.PARKING_GUARD) && (this.endorsementsForSelectedVehicle?.includes(endorsementOptions.PARKING_GUARD)
|| this.endorsementsForSelectedVehicle?.includes(endorsementOptions.EDUCATOR)) || this.endorsementsForSelectedVehicle?.includes(endorsementOptions.EDUCATOR))

View file

@ -46,18 +46,11 @@
:updateValues="updateStyleValues" :updateValues="updateStyleValues"
validationRules="style-required" validationRules="style-required"
inputId="styleQuestionField" /> inputId="styleQuestionField" />
<alert
v-if="displayNoServiceAlert"
ref="AlertNoService"
class="mt-5"
cmsWidgetName="AlertVehicleSelection"
alertClass="alert-danger"
:isDismissable="false" />
<siteFooter <siteFooter
ref="siteFooter" ref="siteFooter"
class="mt-5" class="mt-5"
cmsWidgetName="SiteFooterWidget" cmsWidgetName="SiteFooterWidget"
:isForwardActionDisabled="!meta.valid || displayNoServiceAlert" :isForwardActionDisabled="!meta.valid"
@ForwardClicked="forwardButtonAction" @ForwardClicked="forwardButtonAction"
@backClicked="navigateBack" /> @backClicked="navigateBack" />
</div> </div>
@ -72,7 +65,6 @@ import siteHeader from '@/iss-components/site-header/site-header.vue';
import siteFooter from '@/iss-components/site-footer/site-footer.vue'; import siteFooter from '@/iss-components/site-footer/site-footer.vue';
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue'; import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
import vehicleQuestion from '@/layouts/vehicle-selection/vehicle-question/vehicle-question.vue'; import vehicleQuestion from '@/layouts/vehicle-selection/vehicle-question/vehicle-question.vue';
import alert from '@/ux-components/alert/alert.vue';
import { useMainStore } from '@/store'; import { useMainStore } from '@/store';
// Supporting files // Supporting files
@ -97,8 +89,7 @@ export default {
siteSubHeader, siteSubHeader,
siteFooter, siteFooter,
Form, Form,
vehicleQuestion, vehicleQuestion
alert
}, },
mixins: [baseFormMixin], mixins: [baseFormMixin],
@ -131,15 +122,13 @@ export default {
selectedYear: year, selectedYear: year,
selectedMake: make, selectedMake: make,
selectedModel: model, selectedModel: model,
selectedStyle: style, selectedStyle: style
displayNoServiceAlert: false
}; };
}, },
computed: { computed: {
}, },
watch: { watch: {
selectedYear(value) { selectedYear(value) {
this.resetAlert();
this.mainStore.updateVehicleYear(value); this.mainStore.updateVehicleYear(value);
this.$refs.vehicleMakeQuestion.clearValues(); this.$refs.vehicleMakeQuestion.clearValues();
if (value) { if (value) {
@ -147,7 +136,6 @@ export default {
} }
}, },
selectedMake(value) { selectedMake(value) {
this.resetAlert();
this.mainStore.updateVehicleMake(value); this.mainStore.updateVehicleMake(value);
this.$refs.vehicleModelQuestion.clearValues(); this.$refs.vehicleModelQuestion.clearValues();
if (value) { if (value) {
@ -155,7 +143,6 @@ export default {
} }
}, },
selectedModel(value) { selectedModel(value) {
this.resetAlert();
this.mainStore.updateVehicleModel(value); this.mainStore.updateVehicleModel(value);
this.$refs.vehicleStyleQuestion.clearValues(); this.$refs.vehicleStyleQuestion.clearValues();
if (value) { if (value) {
@ -164,16 +151,7 @@ export default {
}, },
selectedStyle(value) { selectedStyle(value) {
if (value) { if (value) {
this.resetAlert();
this.mainStore.updateVehicleStyle(value); this.mainStore.updateVehicleStyle(value);
this.mainStore.setVehicle(
this.selectedYear,
this.selectedMake,
this.selectedModel,
this.selectedStyle
).then((result) => {
this.displayNoServiceAlert = !result.data.canSafeliteService;
});
} }
} }
}, },
@ -188,16 +166,6 @@ export default {
if (this.selectedModel) { if (this.selectedModel) {
this.$refs.vehicleStyleQuestion.getNewValues(); this.$refs.vehicleStyleQuestion.getNewValues();
} }
if (this.selectedStyle) {
this.mainStore.setVehicle(
this.selectedYear,
this.selectedMake,
this.selectedModel,
this.selectedStyle
).then((result) => {
this.displayNoServiceAlert = !result.data.canSafeliteService;
});
}
}, },
methods: { methods: {
arePagePrerequisitesValid() { arePagePrerequisitesValid() {
@ -208,12 +176,23 @@ export default {
}, },
navigateForward() { navigateForward() {
this.mainStore.setVehicle().then(() => { this.mainStore.setVehicle().then((result) => {
this.$router.navigate( if (!result.data.canSafeliteService) {
this.navigationScenarios.CLICKED_FORWARD, this.mainStore.setBailout(bailoutMessage.HeavyTruckVehicle(this.mainStore.order.vehicle.carId));
}
if (this.mainStore.isBailout) {
return this.$router.navigate(
this.navigationScenarios.BAILOUT,
this.$route this.$route
); );
} }
return this.$router.navigate(
this.navigationScenarios.CLICKED_FORWARD,
this.$route
);
}
); );
}, },
async updateYearValues() { async updateYearValues() {

View file

@ -67,17 +67,4 @@ describe('vin-lookup-alerts.vue', () => {
expect(twoIdenticalYMMVehicleAlert).toBeVisible(); expect(twoIdenticalYMMVehicleAlert).toBeVisible();
}); });
test('NoServiceAlert is displayed on the screen', () => {
mountOptions.props = {
activeAlertType: vehicleLookupAlertTypes.NO_SERVICE
};
mountOptions.global.provide = {
vehicleFromLookup: {}
};
const { queryByRole } = render(VinLookupAlertsComponent, mountOptions);
const noServiceAlert = queryByRole('alert', { name: 'no-service-alert' });
expect(noServiceAlert).toBeVisible();
});
}); });

View file

@ -488,36 +488,6 @@ describe('vin-lookup.vue', () => {
); );
}); });
}); });
test('Display no service alert if entered vin cannot be serviced', async () => {
const user = userEvent.setup();
mountOptions.global.stubs.vinQuestion = false;
mountOptions.data = () => ({
vinWithNonMatchingCarId: false,
isCarIdDifferentFromTheStore: false,
vin: mockValidVin
});
getPartsOrQuestions.mockResponse = vehicleWithNoAdditionalPartsOrQuestionsMockResponse;
jest.spyOn(VinLookupComponent.methods, lookupVehicleByVin.methodName)
.mockResolvedValue(lookupVehicleByVinCannotService.mockResponse);
jest.spyOn(vehicleQuestionsMixin.methods, getPartsOrQuestions.methodName)
.mockResolvedValue(getPartsOrQuestions.mockResponse);
const { container } = render(VinLookupComponent, mountOptions);
const vinInput = container.querySelector(vinInputSelector);
await user.type(vinInput, mockValidVin);
const continueButton = container.querySelector(continueButtonQuerySelector);
await user.click(continueButton);
await flushPromises();
await waitFor(() => {
expect(container).toContainHTML('noService');
});
});
test('Policy Vehicle with invalid vin corrected. Click "Continue", execute navigate with navigationScenario.CORRECTED_VIN_FROM_POLICY_VEHICLE', async () => { test('Policy Vehicle with invalid vin corrected. Click "Continue", execute navigate with navigationScenario.CORRECTED_VIN_FROM_POLICY_VEHICLE', async () => {
const user = userEvent.setup(); const user = userEvent.setup();

View file

@ -179,9 +179,8 @@ export default {
const vehicleLookupResponse = await this.lookupVehicleByVin(this.vin); const vehicleLookupResponse = await this.lookupVehicleByVin(this.vin);
if (!vehicleLookupResponse.data.canSafeliteService) { if (!vehicleLookupResponse.data.canSafeliteService) {
this.activeVehicleLookupAlertType = vehicleLookupAlertTypes.NO_SERVICE; this.mainStore.setBailout(bailoutMessage.HeavyTruckVehicle(vehicleLookupResponse.data.carId));
this.resetVehicleFromLookup(); this.resetVehicleFromLookup();
this.$refs.siteFooter.disableForwardButton();
showIssLoadingModal(false); showIssLoadingModal(false);
return; return;
} }

View file

@ -304,6 +304,7 @@ export default {
}, },
methods: { methods: {
async forwardButtonAction() { async forwardButtonAction() {
this.mainStore.resetVehicleState();
this.mainStore.updatePolicyData(this.welcomePageModel); this.mainStore.updatePolicyData(this.welcomePageModel);
// We want to await this separately. It's quick and if this has an invalid zip we don't want to be waiting on the slower API calls // We want to await this separately. It's quick and if this has an invalid zip we don't want to be waiting on the slower API calls

View file

@ -361,6 +361,14 @@ export default {
const self = vm ?? this; const self = vm ?? this;
const currentPage = self.$route.query.issPage; const currentPage = self.$route.query.issPage;
if (self.mainStore.isBailout) {
self.$router.navigate(
self.navigationScenarios.BAILOUT,
self.$route
);
return;
}
const hasPartQuestions = this.hasPartQuestions(partsOrQuestions); const hasPartQuestions = this.hasPartQuestions(partsOrQuestions);
const hasGlassLocationWithMultipleParts = this.hasGlassLocationWithMultipleParts(partsOrQuestions); const hasGlassLocationWithMultipleParts = this.hasGlassLocationWithMultipleParts(partsOrQuestions);
const hasChildPartQuestions = this.hasChildPartQuestions(partsOrQuestions); const hasChildPartQuestions = this.hasChildPartQuestions(partsOrQuestions);

View file

@ -14,6 +14,10 @@ const routingTable = () => [
{ {
scenario: navigationScenarios.CLICKED_FORWARD, scenario: navigationScenarios.CLICKED_FORWARD,
destinationIssPageValue: issPageValues.POLICY_HOLDER_DETAILS destinationIssPageValue: issPageValues.POLICY_HOLDER_DETAILS
},
{
scenario: navigationScenarios.BAILOUT,
destinationIssPageValue: issPageValues.BAILOUT_PAGE
} }
] ]
}, },