unit tests and clean up
This commit is contained in:
parent
490641ceba
commit
5e204b51b3
11 changed files with 194 additions and 47 deletions
|
|
@ -468,5 +468,41 @@ 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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@
|
||||||
:isDismissible="false" />
|
:isDismissible="false" />
|
||||||
<alert
|
<alert
|
||||||
v-if="displayNoServiceAlert"
|
v-if="displayNoServiceAlert"
|
||||||
ref="AlertNoService"
|
ref="alertNoService"
|
||||||
class="mt-5"
|
class="mt-5"
|
||||||
cmsWidgetName="AlertNoServiceWidget"
|
cmsWidgetName="AlertNoServiceWidget"
|
||||||
alertClass="alert-danger"
|
alertClass="alert-danger"
|
||||||
|
|
@ -263,15 +263,6 @@ export default {
|
||||||
return this.$refs.siteFooter.removeLoader();
|
return this.$refs.siteFooter.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if vehicle is a non-servicable big truck
|
|
||||||
if (resultMap.vinLookupResponse.isBigTruck && !resultMap.vinLookupResponse.canSafeliteService) {
|
|
||||||
this.displayNoServiceAlert = true;
|
|
||||||
this.resetVehicleFromLookup();
|
|
||||||
this.$refs.siteFooter.disableForwardButton();
|
|
||||||
this.$refs.siteFooter.removeLoader();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const carsFound = resultMap.vinLookupResponse.vinVehicles;
|
const carsFound = resultMap.vinLookupResponse.vinVehicles;
|
||||||
|
|
||||||
// Handle cases for different amounts of VINS found for the address.
|
// Handle cases for different amounts of VINS found for the address.
|
||||||
|
|
@ -279,6 +270,13 @@ export default {
|
||||||
// Single VIN found
|
// Single VIN found
|
||||||
const carFound = carsFound[0].vehicle;
|
const carFound = carsFound[0].vehicle;
|
||||||
|
|
||||||
|
// Check if vehicle is a non-servicable big truck
|
||||||
|
if (carFound.isBigTruck && !carFound.canSafeliteService) {
|
||||||
|
this.displayNoServiceAlert = true;
|
||||||
|
this.$refs.siteFooter.disableForwardButton();
|
||||||
|
return this.$refs.siteFooter.removeLoader();
|
||||||
|
}
|
||||||
|
|
||||||
this.isCarIdDifferent =
|
this.isCarIdDifferent =
|
||||||
carFound.carId !== useMainStore().order.vehicle.carId;
|
carFound.carId !== useMainStore().order.vehicle.carId;
|
||||||
if (this.isCarIdDifferent && carFound.carId !== this.previouslyEnteredCarId) {
|
if (this.isCarIdDifferent && carFound.carId !== this.previouslyEnteredCarId) {
|
||||||
|
|
|
||||||
|
|
@ -120,6 +120,7 @@ function setupMocks({
|
||||||
wrapper.vm.navigateBack = baseMixin.methods.navigateBack;
|
wrapper.vm.navigateBack = baseMixin.methods.navigateBack;
|
||||||
wrapper.vm.$refs.siteFooter.updateButtonText = jest.fn();
|
wrapper.vm.$refs.siteFooter.updateButtonText = jest.fn();
|
||||||
wrapper.vm.$refs.siteFooter.removeLoader = jest.fn();
|
wrapper.vm.$refs.siteFooter.removeLoader = jest.fn();
|
||||||
|
wrapper.vm.$refs.siteFooter.disableForwardButton = jest.fn();
|
||||||
|
|
||||||
return { wrapper };
|
return { wrapper };
|
||||||
}
|
}
|
||||||
|
|
@ -165,7 +166,7 @@ describe('address-vehicles.vue', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: Add () to toReturn and ensure test passes.
|
// TODO: Add () to toReturn and ensure test passes.
|
||||||
test.skip('Should return out of forwardButtonAction is lookupVin returns an error', async () => {
|
test('Should return out of forwardButtonAction is lookupVin returns an error', async () => {
|
||||||
// Arrange
|
// Arrange
|
||||||
const { wrapper } = setupMocks({});
|
const { wrapper } = setupMocks({});
|
||||||
wrapper.vm.navigateForwardWithSingleCarMatch = jest.fn();
|
wrapper.vm.navigateForwardWithSingleCarMatch = jest.fn();
|
||||||
|
|
@ -248,4 +249,50 @@ 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: 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);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,13 @@
|
||||||
:manualHeadline="AlertFoundMultipleVehiclesHeader"
|
:manualHeadline="AlertFoundMultipleVehiclesHeader"
|
||||||
manualCopy=""
|
manualCopy=""
|
||||||
:isDismissible="false" />
|
:isDismissible="false" />
|
||||||
|
<alert
|
||||||
|
ref="AlertNoService"
|
||||||
|
v-if="displayNoServiceAlert"
|
||||||
|
class="mt-5"
|
||||||
|
cmsWidgetName="AlertVehicleSelection"
|
||||||
|
alertClass="alert-danger"
|
||||||
|
:isDismissable="false" />
|
||||||
<addressVehiclesQuestion
|
<addressVehiclesQuestion
|
||||||
ref="addressVehiclesQuestion"
|
ref="addressVehiclesQuestion"
|
||||||
v-model="selectedVehicleVin"
|
v-model="selectedVehicleVin"
|
||||||
|
|
@ -156,7 +163,8 @@ export default {
|
||||||
displayMatchedDifferentVehicleAlert: false,
|
displayMatchedDifferentVehicleAlert: false,
|
||||||
displayMatchedTwoIdenticalYMMVehicleAlert: false,
|
displayMatchedTwoIdenticalYMMVehicleAlert: false,
|
||||||
previouslyEnteredCarId: '',
|
previouslyEnteredCarId: '',
|
||||||
forwardButtonCarStyle: ''
|
forwardButtonCarStyle: '',
|
||||||
|
displayNoServiceAlert: false
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -211,6 +219,12 @@ export default {
|
||||||
selectedVehicleVin: {
|
selectedVehicleVin: {
|
||||||
handler() {
|
handler() {
|
||||||
this.resetWarningsAndErrors();
|
this.resetWarningsAndErrors();
|
||||||
|
// check if selected vehicle is a non-serviceable big truck
|
||||||
|
if (this.selectedVehicle?.vehicle.isBigTruck
|
||||||
|
&& !this.selectedVehicle?.vehicle.canSafeliteService) {
|
||||||
|
this.displayNoServiceAlert = true;
|
||||||
|
return this.$refs.siteFooter.disableForwardButton();
|
||||||
|
}
|
||||||
// does this vehicle match the previously selected carId?
|
// does this vehicle match the previously selected carId?
|
||||||
this.isCarIdDifferent =
|
this.isCarIdDifferent =
|
||||||
this.selectedVehicle?.vehicle.carId
|
this.selectedVehicle?.vehicle.carId
|
||||||
|
|
|
||||||
|
|
@ -151,6 +151,37 @@ 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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('navigation', () => {
|
describe('navigation', () => {
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
:isDismissible="false" />
|
:isDismissible="false" />
|
||||||
<alert
|
<alert
|
||||||
v-if="displayNoServiceAlert"
|
v-if="displayNoServiceAlert"
|
||||||
ref="AlertNoService"
|
ref="alertNoService"
|
||||||
class="mt-5 mb-5"
|
class="mt-5 mb-5"
|
||||||
cmsWidgetName="AlertNoServiceWidget"
|
cmsWidgetName="AlertNoServiceWidget"
|
||||||
alertClass="alert-danger"
|
alertClass="alert-danger"
|
||||||
|
|
@ -281,6 +281,13 @@ export default {
|
||||||
// Vehicle found from VIN lookup
|
// Vehicle found from VIN lookup
|
||||||
const vehicleFromLookup = vinLookupResponse.data.vehicle;
|
const vehicleFromLookup = vinLookupResponse.data.vehicle;
|
||||||
|
|
||||||
|
// Check if vehicle is a non-servicable big truck
|
||||||
|
if (vehicleFromLookup.isBigTruck && !vehicleFromLookup.canSafeliteService) {
|
||||||
|
this.displayNoServiceAlert = true;
|
||||||
|
this.$refs.siteFooter.disableForwardButton();
|
||||||
|
return this.$refs.siteFooter.removeLoader();
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the CarId has changed
|
// Check if the CarId has changed
|
||||||
this.isCarIdDifferent = vehicleFromLookup.carId !== useMainStore().order.vehicle.carId;
|
this.isCarIdDifferent = vehicleFromLookup.carId !== useMainStore().order.vehicle.carId;
|
||||||
// Handle changing car
|
// Handle changing car
|
||||||
|
|
@ -307,14 +314,6 @@ export default {
|
||||||
return this.$refs.siteFooter.removeLoader();
|
return this.$refs.siteFooter.removeLoader();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if vehicle is a non-servicable big truck
|
|
||||||
if (vehicleFromLookup.isBigTruck && !vehicleFromLookup.canSafeliteService) {
|
|
||||||
this.displayNoServiceAlert = true;
|
|
||||||
this.resetVehicleFromLookup();
|
|
||||||
this.$refs.siteFooter.disableForwardButton();
|
|
||||||
return this.$refs.siteFooter.removeLoader();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Save vehicle, license plate, and registration information
|
// Save vehicle, license plate, and registration information
|
||||||
useMainStore().saveRegistrationLicensePlateLookup({
|
useMainStore().saveRegistrationLicensePlateLookup({
|
||||||
isSelectedGlassAvailableForVehicle: this.isSelectedGlassAvailableForVehicle,
|
isSelectedGlassAvailableForVehicle: this.isSelectedGlassAvailableForVehicle,
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ function setupMocks() {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
plugins: [createTestingPinia()]
|
plugins: [createTestingPinia()]
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const apiResponses = {
|
const apiResponses = {
|
||||||
|
|
@ -737,4 +737,29 @@ 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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -27,14 +27,14 @@
|
||||||
<alert
|
<alert
|
||||||
ref="AlertNoService"
|
ref="AlertNoService"
|
||||||
v-if="displayNoServiceAlert"
|
v-if="displayNoServiceAlert"
|
||||||
class="mt-5"
|
class="mt-3"
|
||||||
cmsWidgetName="AlertVehicleSelection"
|
cmsWidgetName="AlertVehicleSelection"
|
||||||
alertClass="alert-danger"
|
alertClass="alert-danger"
|
||||||
:isDismissable="false" />
|
: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>
|
||||||
|
|
@ -161,8 +161,10 @@ export default {
|
||||||
this.displayGeneric = true;
|
this.displayGeneric = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (vehicle.data.isBigTruck && !vehicle.data.canSafeliteService) {
|
// check if vehicle is a non-serviceable big truck
|
||||||
|
if (vehicle?.data.isBigTruck && !vehicle?.data.canSafeliteService) {
|
||||||
this.displayNoServiceAlert = true;
|
this.displayNoServiceAlert = true;
|
||||||
|
this.$refs.siteFooter.disableForwardButton();
|
||||||
}
|
}
|
||||||
if (vehicle) {
|
if (vehicle) {
|
||||||
// save selected vehicle to the store
|
// save selected vehicle to the store
|
||||||
|
|
|
||||||
|
|
@ -68,4 +68,17 @@ 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();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,7 @@ const lookupVehicleByVinCannotService = {
|
||||||
mockResponse: {
|
mockResponse: {
|
||||||
data: {
|
data: {
|
||||||
carId: mockCarId,
|
carId: mockCarId,
|
||||||
|
isBigTruck: true,
|
||||||
canSafeliteService: false
|
canSafeliteService: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -494,13 +495,13 @@ 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();
|
const user = userEvent.setup();
|
||||||
mountOptions.global.stubs.vinQuestion = false;
|
mountOptions.global.stubs.vinQuestion = false;
|
||||||
|
|
||||||
mountOptions.data = () => ({
|
mountOptions.data = () => ({
|
||||||
vinWithNonMatchingCarId: false,
|
vinWithNonMatchingCarId: false,
|
||||||
isCarIdDifferentFromTheStore: false,
|
isCarIdDifferentFromTheStore: false,
|
||||||
vin: mockValidVin
|
vin: mockValidVin
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -521,12 +522,7 @@ describe('vin-lookup.vue', () => {
|
||||||
|
|
||||||
await flushPromises();
|
await flushPromises();
|
||||||
await waitFor(() => {
|
await waitFor(() => {
|
||||||
expect(mockRouter.navigate).toHaveBeenCalledTimes(1);
|
expect(container).toContainHTML('noService');
|
||||||
expect(mockRouter.navigate)
|
|
||||||
.toHaveBeenCalledWith(
|
|
||||||
navigationScenarios.CLICKED_FORWARD_WITH_BAILOUT,
|
|
||||||
mockRoute
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -238,20 +238,6 @@ describe('Store', () => {
|
||||||
expect(store.order.insuranceCoverage.coverageType).toBe(expected);
|
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
|
// TODO update test to work also checking store values
|
||||||
it('setVehicle should call globalMethods.callHttpClient', () => {
|
it('setVehicle should call globalMethods.callHttpClient', () => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue