From 55a63e668380b5ca0978789b00085a078fd31b51 Mon Sep 17 00:00:00 2001 From: Kroell Date: Wed, 18 Jan 2023 16:25:52 -0500 Subject: [PATCH] unit tests for license-plate-lookup --- .../license-plate-lookup.spec.js | 156 +++++++++++++++--- 1 file changed, 130 insertions(+), 26 deletions(-) diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.spec.js b/src/layouts/license-plate-lookup/license-plate-lookup.spec.js index 016eba1d..8be90ded 100644 --- a/src/layouts/license-plate-lookup/license-plate-lookup.spec.js +++ b/src/layouts/license-plate-lookup/license-plate-lookup.spec.js @@ -27,7 +27,7 @@ jest.mock("@/helpers/cms-content-helper", () => ({ describe("license-plate-lookup.vue", () => { describe ("page level alerts", () => { - test("License plate matches a different vehicle, display MatchedDifferentVehicleAlert", async () => { + test("If license plate matches a different vehicle, display MatchedDifferentVehicleAlert", async () => { // Arrange const mockRegistrationLicensePlate = { licensePlate: "UTN990", @@ -35,7 +35,7 @@ describe("license-plate-lookup.vue", () => { const { wrapper } = setupMocks({}); - useMainStore().order.vehicle.carId = "C00000"; + useMainStore().order.vehicle.carId = "TESTCARID"; await wrapper.setData({ licensePlate: mockRegistrationLicensePlate @@ -49,26 +49,31 @@ describe("license-plate-lookup.vue", () => { true ); }); - }) + // test("If no vehicles found, display VinNotFound alert", async () => { + // Arrange + // const mockRegistrationLicensePlate = { + // licensePlate: "", + // }; + + // const { wrapper } = setupMocks({}); + + // useMainStore().order.vehicle.carId = "TESTCARID"; + + // await wrapper.setData({ + // licensePlate: mockRegistrationLicensePlate + // }); + + // wrapper.vm.navigateForward = jest.fn(); + + // Act + // await wrapper.vm.forwardButtonAction(); + + // Assert + // expect(wrapper.findComponent({ ref: "alertVinNotFound" }).isVisible()).toBe(true); + // }); + + }); describe ("navigation", () => { - test("Vehicle make set, arePagePrerequisitesValid should be true", () => { - // Arrange - const { wrapper } = setupMocks({}); - useMainStore().order.vehicle.carId = "CR00000395"; - - // Act - licensePlateLookup.beforeRouteEnter.call( - wrapper.vm, - { query: { issPage: "license-plate-lookup" } }, - undefined, - (c) => c(wrapper.vm) - ); - - let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); - - // Assert - expect(arePagePrerequisitesValid).toBe(true); - }); test("BackButtonAction triggers a router.navigate change", async () => { //Arrange const { wrapper, apiPromise } = setupMocks({ @@ -89,7 +94,103 @@ describe("license-plate-lookup.vue", () => { //Assert expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); - }) + }); + test("If a different vehicle is found than the one entered and the selected glass is not available for that vehicle, navigate back to vehicle-damage page", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + await wrapper.setData({ + isCarIdDifferent: true, + isSelectedGlassAvailableForVehicle: false, + }); + + useMainStore().order.vehicle.carId = "CARID"; + + let vehicleFound = { + carId: "C0000", + }; + + // Act + await wrapper.vm.navigateForward(vehicleFound); + + // Assert + expect(wrapper.vm.$router.navigate).toHaveBeenCalledWith( + navigationScenarios.SELECTED_VIN_WITH_MISMATCHED_GLASS, + undefined, + {}, + { displayVehicleChangeAlert: true } + ); + }); + + test("License plate found and matches entered vehicle => navigateForwardWithSingleCarMatch", async () => { + // Arrange + const vehicleFound = { + carId: "C0000", + }; + + const { wrapper } = setupMocks({}); + wrapper.vm.navigateForwardWithSingleCarMatch = jest.fn(); + + useMainStore().order.vehicle.carId = "C0000"; + + // Act + wrapper.vm.navigateForward(vehicleFound); + + // Assert + expect(wrapper.vm.navigateForwardWithSingleCarMatch).toHaveBeenCalledTimes(1); + }); + + test("navigateForwardWithSingleCarMatch should be called if isCarIdDifferent is false or isSelectedGlassAvailableForVehicle is true when navigateForward is called", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + //Act + await wrapper.setData({ + isCarIdDifferent: false, + }); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ""; + }); + wrapper.vm.navigateForwardWithSingleCarMatch = jest.fn(); + await wrapper.vm.navigateForward(); + + //Assert + expect(wrapper.vm.navigateForwardWithSingleCarMatch).toHaveBeenCalled(); + }); +}); +describe ("miscellaneous", () => { + test("Button Text should revert to initial value when registrationZip textfield has new text", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + //Act + await wrapper.setData({ + registrationZipCode: "55555", + }); + wrapper.vm.getCmsContent = jest.fn(); + await wrapper.vm.$nextTick(); + + //Assert + expect(wrapper.vm.$refs.siteFooter.updateButtonText).toHaveBeenCalled(); + }); + test("Vehicle make set, arePagePrerequisitesValid should be true", () => { + // Arrange + const { wrapper } = setupMocks({}); + useMainStore().order.vehicle.carId = "CR00000395"; + + // Act + licensePlateLookup.beforeRouteEnter.call( + wrapper.vm, + { query: { issPage: "license-plate-lookup" } }, + undefined, + (c) => c(wrapper.vm) + ); + + let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); + + // Assert + expect(arePagePrerequisitesValid).toBe(true); + }); }); }); @@ -101,6 +202,8 @@ function setupMocks({ vehicle = {}, carId = "C0000", route = null, + licensePlate = "TEST123", + licenseState = "ZZ", }) { useMainStore().validateZip = jest.fn().mockImplementation(() => { @@ -115,10 +218,9 @@ function setupMocks({ useMainStore().lookupVinByPlate = jest.fn().mockImplementation(() => { return Promise.resolve({ data: lookupVinByPlateResponse - ? lookupVinByPlateResponse - : { - licensePlate: "TEST1234", - licenseState: "ZZ" + ? lookupVinByPlateResponse: { + licensePlate: licensePlate, + licenseState: licenseState, }, }) }); @@ -160,6 +262,8 @@ function setupMocks({ }, vinLookupResponse: { vehicle: vehicle, + licensePlate: licensePlate, + licenseState: licenseState, }, };