Merge pull request #955 from Safelite/feature/INSR-2205

INSR-2205: Catch non-serviceable big trucks in the flow / display error message
This commit is contained in:
katiekroell 2025-09-11 14:01:27 -04:00 committed by GitHub
commit a59e96e18c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 450 additions and 59 deletions

View file

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

View file

@ -110,7 +110,8 @@ describe('address-lookup.vue', () => {
vinVehicles: [
{
vehicle: {
carId: 'C00000'
carId: 'C00000',
canSafeliteService: true
}
}
]
@ -144,7 +145,8 @@ describe('address-lookup.vue', () => {
vinVehicles: [
{
vehicle: {
carId: 'C00000'
carId: 'C00000',
canSafeliteService: true
}
}
]
@ -275,7 +277,8 @@ describe('address-lookup.vue', () => {
vinVehicles: [
{
vehicle: {
carId: 'C11111'
carId: 'C11111',
canSafeliteService: true
}
}
]
@ -468,5 +471,76 @@ describe('address-lookup.vue', () => {
// Assert
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

@ -53,6 +53,13 @@
cmsWidgetName="AlertVinLookupsByHomeAddressNotAllowedWidget"
alertClass="alert-danger"
:isDismissible="false" />
<alert
v-if="displayNoServiceAlert"
ref="alertNoService"
class="mt-5"
cmsWidgetName="AlertNoServiceWidget"
alertClass="alert-danger"
:isDismissable="false" />
<customerQuestions
ref="customerQuestions"
v-model="customerQuestions" />
@ -137,7 +144,8 @@ export default {
isCarIdDifferent: false,
isSelectedGlassAvailableForVehicle: true,
customAlertData: {},
forwardButtonCarStyle: ''
forwardButtonCarStyle: '',
displayNoServiceAlert: false
};
},
computed: {
@ -262,6 +270,12 @@ export default {
// Single VIN found
const carFound = carsFound[0].vehicle;
if (!carFound.canSafeliteService) {
this.displayNoServiceAlert = true;
this.$refs.siteFooter.disableForwardButton();
return this.$refs.siteFooter.removeLoader();
}
this.isCarIdDifferent =
carFound.carId !== useMainStore().order.vehicle.carId;
if (this.isCarIdDifferent && carFound.carId !== this.previouslyEnteredCarId) {
@ -370,6 +384,7 @@ export default {
this.displayVinNotFoundAlert = false;
this.displayMatchedDifferentVehicleAlert = false;
this.displayVinLookupByHomeAddressNotAllowedAlert = false;
this.displayNoServiceAlert = false;
this.$refs.siteFooter.enableForwardAction();
}
}

View file

@ -120,6 +120,7 @@ function setupMocks({
wrapper.vm.navigateBack = baseMixin.methods.navigateBack;
wrapper.vm.$refs.siteFooter.updateButtonText = jest.fn();
wrapper.vm.$refs.siteFooter.removeLoader = jest.fn();
wrapper.vm.$refs.siteFooter.disableForwardButton = jest.fn();
return { wrapper };
}
@ -248,4 +249,94 @@ describe('address-vehicles.vue', () => {
// Assert
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: 2015,
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'
});
2
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

@ -26,6 +26,13 @@
:manualHeadline="AlertFoundMultipleVehiclesHeader"
manualCopy=""
:isDismissible="false" />
<alert
ref="AlertNoService"
v-if="displayNoServiceAlert"
class="mt-5"
cmsWidgetName="AlertVehicleSelection"
alertClass="alert-danger"
:isDismissable="false" />
<addressVehiclesQuestion
ref="addressVehiclesQuestion"
v-model="selectedVehicleVin"
@ -156,7 +163,8 @@ export default {
displayMatchedDifferentVehicleAlert: false,
displayMatchedTwoIdenticalYMMVehicleAlert: false,
previouslyEnteredCarId: '',
forwardButtonCarStyle: ''
forwardButtonCarStyle: '',
displayNoServiceAlert: false
};
},
computed: {
@ -211,6 +219,10 @@ export default {
selectedVehicleVin: {
handler() {
this.resetWarningsAndErrors();
if (!this.selectedVehicle?.vehicle.canSafeliteService) {
this.displayNoServiceAlert = true;
return this.$refs.siteFooter.disableForwardButton();
}
// does this vehicle match the previously selected carId?
this.isCarIdDifferent =
this.selectedVehicle?.vehicle.carId

View file

@ -34,7 +34,8 @@ function setupMocks({
data: lookupVinByPlateResponse || {
vin: 'TEST_VIN',
vehicle: {
carId: 'CARID'
carId: 'CARID',
canSafeliteService: true
}
},
error: vinLookupResponseError
@ -151,6 +152,68 @@ describe('license-plate-lookup.vue', () => {
// Assert
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', () => {

View file

@ -47,6 +47,13 @@
:manualCopy="AlertMatchedTwoIdenticalYMMVehicleBody"
alertClass="alert-warning"
:isDismissible="false" />
<alert
v-if="displayNoServiceAlert"
ref="alertNoService"
class="my-5"
cmsWidgetName="AlertNoServiceWidget"
alertClass="alert-danger"
:isDismissable="false" />
<textboxQuestion
id="license-plate-question-wrapper"
v-model="licensePlate"
@ -156,7 +163,8 @@ export default {
isCarIdDifferent: false,
customAlertData: {},
isSelectedGlassAvailableForVehicle: true,
forwardButtonCarStyle: ''
forwardButtonCarStyle: '',
displayNoServiceAlert: false
};
},
computed: {
@ -273,6 +281,12 @@ export default {
// Vehicle found from VIN lookup
const vehicleFromLookup = vinLookupResponse.data.vehicle;
if (!vehicleFromLookup.canSafeliteService) {
this.displayNoServiceAlert = true;
this.$refs.siteFooter.disableForwardButton();
return this.$refs.siteFooter.removeLoader();
}
// Check if the CarId has changed
this.isCarIdDifferent = vehicleFromLookup.carId !== useMainStore().order.vehicle.carId;
// Handle changing car
@ -333,6 +347,7 @@ export default {
resetWarningsAndErrors() {
this.displayVinNotFoundAlert = false;
this.displayMatchedDifferentVehicleAlert = false;
this.displayNoServiceAlert = false;
}
}
};

View file

@ -73,6 +73,7 @@ function setupMocks() {
wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent;
wrapper.vm.$refs.siteFooter.updateButtonText = jest.fn();
wrapper.vm.$refs.siteFooter.removeLoader = jest.fn();
wrapper.vm.$refs.siteFooter.disableForwardButton = jest.fn();
return { wrapper };
}
@ -737,4 +738,54 @@ describe('policy-vehicles.vue', () => {
// Assert
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

@ -24,6 +24,13 @@
cmsWidgetName="PolicyVehiclesQuestion"
:vehicles="VehiclesForQuestions"
:validationRules="rules.optionRequired" />
<alert
ref="AlertNoService"
v-if="displayNoServiceAlert"
class="mt-3"
cmsWidgetName="AlertVehicleSelection"
alertClass="alert-danger"
:isDismissable="false" />
<siteFooter
ref="siteFooter"
cmsWidgetName="SiteFooterWidget"
@ -58,6 +65,7 @@ import {
repairWaivedForSelectedVehicle
} from '@/helpers/policy-vehicle-helper';
import coverageType from '@/constants/coverage-type';
import alert from '@/ux-components/alert/alert.vue';
export default {
name: 'policy-vehicles',
@ -67,7 +75,8 @@ export default {
vehicleBanner,
policyVehiclesQuestion,
// eslint-disable-next-line vue/no-reserved-component-names
Form
Form,
alert
},
mixins: [BaseFormMixin],
async beforeRouteEnter(to, from, next) {
@ -89,7 +98,8 @@ export default {
policyVinFound: true,
rules: {
optionRequired: globalRules.OPTION_REQUIRED
}
},
displayNoServiceAlert: false
};
},
computed: {
@ -115,7 +125,6 @@ export default {
if (this.selectedVehicleVin !== vehicleSelectionOptions.VEHICLE_NOT_LISTED) {
return this.policyVehicles.find((p) => p.vin === this.selectedVehicleVin);
}
return null;
},
noCoverageForSelectedVehicle() {
@ -137,6 +146,7 @@ export default {
},
watch: {
async selectedVehicleVin(value) {
this.displayNoServiceAlert = false;
if (value === vehicleSelectionOptions.VEHICLE_NOT_LISTED) {
// clear previously selected vehicle and image
this.mainStore.resetVehicleState();
@ -151,6 +161,10 @@ export default {
this.displayGeneric = true;
return;
}
if (!vehicle?.data.canSafeliteService) {
this.displayNoServiceAlert = true;
this.$refs.siteFooter.disableForwardButton();
}
if (vehicle) {
// save selected vehicle to the store
this.displayGeneric = false;

View file

@ -52,18 +52,23 @@
:updateValues="updateStyleValues"
validationRules="style-required"
inputId="styleQuestionField" />
<vehicleBanner
ref="banner"
cmsWidgetName="VehicleBannerWidget"
:displayGenericVehicleImage="displayGeneric"
class="mt-5 mb-3" />
<alert
ref="AlertNoService"
v-if="displayNoServiceAlert"
class="mt-5"
cmsWidgetName="AlertVehicleSelection"
alertClass="alert-danger"
:isDismissable="false" />
<siteFooter
ref="siteFooter"
class="mt-5"
cmsWidgetName="SiteFooterWidget"
:isForwardActionDisabled="!meta.valid"
:isForwardActionDisabled="!meta.valid || displayNoServiceAlert"
@ForwardClicked="forwardButtonAction"
@backClicked="navigateBack" />
</div>
@ -79,6 +84,7 @@ import siteFooter from '@/iss-components/site-footer/site-footer.vue';
import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue';
import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue';
import vehicleQuestion from '@/layouts/vehicle-selection/vehicle-question/vehicle-question.vue';
import alert from '@/ux-components/alert/alert.vue';
import { useMainStore } from '@/store';
// Supporting files
@ -105,7 +111,8 @@ export default {
siteFooter,
// eslint-disable-next-line vue/no-reserved-component-names
Form,
vehicleQuestion
vehicleQuestion,
alert
},
mixins: [baseFormMixin],
@ -138,7 +145,8 @@ export default {
selectedYear: year,
selectedMake: make,
selectedModel: model,
selectedStyle: style
selectedStyle: style,
displayNoServiceAlert: false
};
},
computed: {
@ -146,9 +154,9 @@ export default {
return !this.selectedStyle;
}
},
watch: {
selectedYear(value) {
this.resetAlert();
this.mainStore.updateVehicleYear(value);
this.$refs.vehicleMakeQuestion.clearValues();
if (value) {
@ -156,6 +164,7 @@ export default {
}
},
selectedMake(value) {
this.resetAlert();
this.mainStore.updateVehicleMake(value);
this.$refs.vehicleModelQuestion.clearValues();
if (value) {
@ -163,6 +172,7 @@ export default {
}
},
selectedModel(value) {
this.resetAlert();
this.mainStore.updateVehicleModel(value);
this.$refs.vehicleStyleQuestion.clearValues();
if (value) {
@ -170,8 +180,16 @@ export default {
}
},
selectedStyle(value) {
this.resetAlert();
this.mainStore.updateVehicleStyle(value);
this.mainStore.setVehicle();
this.mainStore.setVehicle(
this.selectedYear,
this.selectedMake,
this.selectedModel,
this.selectedStyle
).then((result) => {
this.displayNoServiceAlert = !result.data.canSafeliteService;
});
}
},
mounted() {
@ -185,6 +203,16 @@ export default {
if (this.selectedModel) {
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: {
arePagePrerequisitesValid() {
@ -264,7 +292,10 @@ export default {
this.$route
);
});
}
},
resetAlert() {
this.displayNoServiceAlert = false;
}
}
};
</script>

View file

@ -0,0 +1,26 @@
<template>
<alert
id="no-service-alert"
alertClass="alert-danger"
cmsWidgetName="AlertNoServiceWidget"
aria-label="no-service-alert" />
</template>
<script>
import alert from '@/ux-components/alert/alert.vue';
export default {
name: 'no-service-alert',
components: {
alert
},
inject: ['vehicleFromLookup']
};
</script>
<style>
/**
Override wrong margin-bottom rule in the Alert component.
*/
#no-service-alert p:last-of-type {
margin-bottom: 0 !important;
}
</style>

View file

@ -68,4 +68,17 @@ describe('vin-lookup-alerts.vue', () => {
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

@ -10,6 +10,8 @@
v-else-if="isVehicleNotMatchedVisible" />
<perfectMatchAlert
v-else-if="isPerfectMatchVisible" />
<noServiceAlert
v-else-if="isNoServiceVisible" />
</div>
</template>
<script>
@ -19,6 +21,7 @@ import vehicleNotMatchedAlert from '@/layouts/vin-lookup/vin-lookup-alerts/vehic
import twoIdenticalYMMVehicleAlert from
'@/layouts/vin-lookup/vin-lookup-alerts/two-identical-ymm-vehicle-alert/two-identical-ymm-vehicle-alert.vue';
import perfectMatchAlert from '@/layouts/vin-lookup/vin-lookup-alerts//perfect-match-alert/perfect-match-alert.vue';
import noServiceAlert from './no-service-alert/no-service-alert.vue';
export default {
name: 'vin-lookup-alerts',
@ -26,7 +29,8 @@ export default {
vehicleNotFoundAlert,
vehicleNotMatchedAlert,
twoIdenticalYMMVehicleAlert,
perfectMatchAlert
perfectMatchAlert,
noServiceAlert
},
props: {
activeAlertType: {
@ -51,6 +55,9 @@ export default {
isPerfectMatchVisible() {
return this.activeAlertType === vehicleLookupAlertTypes.PERFECT_MATCH;
},
isNoServiceVisible() {
return this.activeAlertType === vehicleLookupAlertTypes.NO_SERVICE;
},
wrapperCssClass() {
return {
'mb-5': this.activeAlertType !== null

View file

@ -34,6 +34,7 @@ const lookupVehicleByVinCannotService = {
mockResponse: {
data: {
carId: mockCarId,
isBigTruck: true,
canSafeliteService: false
}
}
@ -494,7 +495,7 @@ describe('vin-lookup.vue', () => {
);
});
});
test('Bailout if entered vin cannot be serviced', async () => {
test('Display no service alert if entered vin cannot be serviced', async () => {
const user = userEvent.setup();
mountOptions.global.stubs.vinQuestion = false;
@ -521,12 +522,7 @@ describe('vin-lookup.vue', () => {
await flushPromises();
await waitFor(() => {
expect(mockRouter.navigate).toHaveBeenCalledTimes(1);
expect(mockRouter.navigate)
.toHaveBeenCalledWith(
navigationScenarios.CLICKED_FORWARD_WITH_BAILOUT,
mockRoute
);
expect(container).toContainHTML('noService');
});
});

View file

@ -197,13 +197,13 @@ export default {
}
if (!vehicleLookupResponse.data.canSafeliteService) {
this.mainStore.setBailout(bailoutMessage.HeavyTruckVehicle(vehicleLookupResponse.data.carId));
this.$router.navigate(this.navigationScenarios.CLICKED_FORWARD_WITH_BAILOUT, this.$route);
this.activeVehicleLookupAlertType = vehicleLookupAlertTypes.NO_SERVICE;
this.resetVehicleFromLookup();
this.$refs.siteFooter.disableForwardButton();
this.$refs.siteFooter.removeLoader();
return;
}
this.mainStore.resetBailout();
// Add vin bcs the response from the service doesn't contain vin
this.vehicleFromLookup = Object.assign(
vehicleLookupResponse.data,

View file

@ -90,7 +90,8 @@ export const getDefaultState = () => ({
firstName: null,
lastName: null
},
isBigTruck: false
isBigTruck: null,
canSafeliteService: null
},
damage: {
isRepair: null,
@ -1342,19 +1343,17 @@ export const useMainStore = defineStore({
});
},
setVehicle() {
async setVehicle() {
const encodedMake = encodeURIComponent(this.order.vehicle.make);
const encodedModel = encodeURIComponent(this.order.vehicle.model);
return globalMethods
const response = await globalMethods
.callHttpClient({
method: endpoints.GetVehicle.method,
endpoint: `${endpoints.GetVehicle.url}/${this.order.vehicle.year}/${encodedMake}/${encodedModel}/${this.order.vehicle.style}`,
payload: {}
})
.then((response) => {
this.updateVehicle(response.data);
return response;
});
this.updateVehicle(response.data);
return response;
},
setSaveSessionInfo(response) {
@ -1986,13 +1985,8 @@ export const useMainStore = defineStore({
this.order.vehicle.imageUrl = vehicle.imageUrl;
this.order.vehicle.imageVifNumber = vehicle.imageVifNumber;
this.order.vehicle.imageColor = vehicle.imageVifColor;
this.order.vehicle.isBigTruck = vehicle.isBigTruck
if (vehicle.canSafeliteService !== undefined && !vehicle.canSafeliteService) {
this.setBailout(bailoutMessage.HeavyTruckVehicle(vehicle.carId));
} else if (this.isBailout && this.bailoutCode === bailoutCode.HeavyTruckVehicle) {
this.resetBailout();
}
this.order.vehicle.isBigTruck = vehicle.isBigTruck;
this.order.vehicle.canSafeliteService = vehicle.canSafeliteService;
this.updateSupportingItems(null);
this.updateVaps(null);
@ -2117,6 +2111,8 @@ export const useMainStore = defineStore({
this.order.vehicle.registration.zipCode = null;
this.order.vehicle.registration.firstName = null;
this.order.vehicle.registration.lastName = null;
this.order.vehicle.isBigTruck = null;
this.order.vehicle.canSafeliteService = null;
if (this.isBailout && this.bailoutCode === bailoutCode.HeavyTruckVehicle) {
this.resetBailout();

View file

@ -238,20 +238,6 @@ describe('Store', () => {
expect(store.order.insuranceCoverage.coverageType).toBe(expected);
});
});
it('setVehicle is bailout if the vehicle cannot be serviced by Safelite', () => {
// Arrange
const vehicle = {
carId: getRandomString(6, 6),
canSafeliteService: false
};
// Act
store.updateVehicle(vehicle);
// Assert
expect(store.isBailout).toBe(true);
expect(store.bailoutCode).toBe(bailoutCode.HeavyTruckVehicle);
});
// TODO update test to work also checking store values
it('setVehicle should call globalMethods.callHttpClient', () => {