From d4530b9091527820abd5c2430721febafbab0b03 Mon Sep 17 00:00:00 2001 From: Katie Date: Wed, 25 May 2022 15:30:21 -0400 Subject: [PATCH 01/18] CSR-416 Restructure license-plate-lookup.spec.js --- .../license-plate-lookup.spec.js | 651 +++++++++--------- 1 file changed, 311 insertions(+), 340 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 281947ae4..99f1f86c8 100644 --- a/src/layouts/license-plate-lookup/license-plate-lookup.spec.js +++ b/src/layouts/license-plate-lookup/license-plate-lookup.spec.js @@ -30,8 +30,8 @@ jest.mock("@/store", () => ({ dispatch: jest.fn(), getters: { order: { - customer: { emailAddress: "test@test.com"}, - serviceLocation: {zip: "11111"}, + customer: { emailAddress: "test@test.com" }, + serviceLocation: { zip: "11111" }, }, vehicle: { carId: "TESTID", @@ -48,382 +48,353 @@ jest.mock("@/store", () => ({ })); describe("license-plate-lookup.vue", () => { - test("CarId set, arePagePrerequisitesValid should be true ", async () => { - //Arrange - const { wrapper } = setupMocks({}); + describe("get values from store", () => { + test("getLicensePlateFromStore returns store license plate", async () => { + // Arrange + const { wrapper } = setupMocks({}); - //Act - licensePlateLookup.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "license-plate-lookup" } }, - undefined, - (c) => c(wrapper.vm) - ); + // ACT + const licensePlate = wrapper.vm.getLicensePlateFromStore(); - let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); - await nextTick(); + // Assert + expect(licensePlate).toEqual("TESTPLATE"); + }); - //Assert - expect(arePagePrerequisitesValid).toBe(true); + test("getRegistrationZipFromStore returns store registration zip", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + // ACT + const registrationZip = wrapper.vm.getRegistrationZipFromStore(); + + // Assert + expect(registrationZip).toEqual("12345"); + }); + + test("getEmailFromStore returns store customer email", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + // ACT + const customerEmail = wrapper.vm.getEmailFromStore(); + + // Assert + expect(customerEmail).toEqual("test@test.com"); + }); + + test("getServiceZipFromStore returns store service zip", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + // ACT + const serviceZip = wrapper.vm.getServiceZipFromStore(); + + // Assert + expect(serviceZip).toEqual("11111"); + }); }); -}); -describe("license-plate-lookup.vue", () => { - test("BackButtonAction triggers a router.navigate change", async () => { + describe("navigation", () => { + test("BackButtonAction triggers a router.navigate change", async () => { - //Arrange - const { wrapper } = setupMocks({}); + //Arrange + const { wrapper } = setupMocks({}); + + //Act + licensePlateLookup.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "license-plate-lookup" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.backButtonAction(); + + //Assert + expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); + }); - //Act - licensePlateLookup.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "license-plate-lookup" } }, - undefined, - (c) => c(wrapper.vm) - ); + describe("on forwardButtonAction click", () => { + test("Navigate forward should be called and isCarId should be set to false when data entered matches store data on forwardButtonAction click", async () => { - wrapper.vm.backButtonAction(); - - //Assert - expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("getLicensePlateFromStore returns store license plate", async () => { + // Arrange + const { wrapper } = setupMocks({}); - // Arrange - const { wrapper } = setupMocks({}); - - // ACT - const licensePlate = wrapper.vm.getLicensePlateFromStore(); - - // Assert - expect(licensePlate).toEqual("TESTPLATE"); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("getRegistrationZipFromStore returns store registration zip", async () => { + wrapper.vm.validateZip = jest.fn().mockImplementation(() => { + return { data: { isServiceable: true } }; + }); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ''; + }); + const vinLookup = { data: { vehicle: { carId: "TESTID" } } } + wrapper.vm.lookupVin = jest.fn().mockImplementation(() => { + return { catch: () => vinLookup }; + }); + wrapper.vm.navigateForward = jest.fn(); - // Arrange - const { wrapper } = setupMocks({}); - - // ACT - const registrationZip = wrapper.vm.getRegistrationZipFromStore(); - - // Assert - expect(registrationZip).toEqual("12345"); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("getEmailFromStore returns store customer email", async () => { + //Act + licensePlateLookup.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "license-plate-lookup" } }, + undefined, + (c) => c(wrapper.vm) + ); - // Arrange - const { wrapper } = setupMocks({}); - - // ACT - const customerEmail = wrapper.vm.getEmailFromStore(); - - // Assert - expect(customerEmail).toEqual("test@test.com"); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("getServiceZipFromStore returns store service zip", async () => { + await wrapper.vm.forwardButtonAction(); - // Arrange - const { wrapper } = setupMocks({}); + //Assert + expect(wrapper.vm.navigateForward).toHaveBeenCalled(); + expect(wrapper.vm.isCarIdDifferent).toEqual(false); + }); - // ACT - const serviceZip = wrapper.vm.getServiceZipFromStore(); + test("Function should stop and datam isRegistrationZipServicable should be set to false when service zip entered returns false on forwardButtonAction click", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + wrapper.vm.validateZip = jest.fn().mockImplementation(() => { + return { data: { isServiceable: false } }; + }); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ''; + }); + wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn(); - // Assert - expect(serviceZip).toEqual("11111"); - }); -}); + //Act + licensePlateLookup.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "license-plate-lookup" } }, + undefined, + (c) => c(wrapper.vm) + ); + + await wrapper.vm.forwardButtonAction(); + + //Assert + expect(wrapper.vm.isRegistrationZipServicable).toEqual(false); + }); -describe("license-plate-lookup.vue", () => { - test("Navigate forward should be called and isCarId should be set to false when data entered matches store data on forwardButtonAction click", async () => { + test("Function should stop and datam isCarIdDifferent should be set to true when carId entered doesn't match store carId or previously entered carId on forwardButtonAction click", async () => { + // Arrange + const { wrapper } = setupMocks({}); + + wrapper.vm.validateZip = jest.fn().mockImplementation(() => { + return { data: { isServiceable: true } }; + }); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ''; + }); + const vinLookup = { data: { vehicle: { carId: "TESTID1" } } } + wrapper.vm.lookupVin = jest.fn().mockImplementation(() => { + return { catch: () => vinLookup }; + }); + wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn(); + wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); + + //Act + licensePlateLookup.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "license-plate-lookup" } }, + undefined, + (c) => c(wrapper.vm) + ); + + await wrapper.vm.forwardButtonAction(); + + //Assert + expect(wrapper.vm.isCarIdDifferent).toEqual(true); + }); - // Arrange - const { wrapper } = setupMocks({}); + test("Navigate forward should be called and isCarId should be set to true when carId entered matches previously entered carId and rest of data entered matches store data on forwardButtonAction click", async () => { - wrapper.vm.validateZip = jest.fn().mockImplementation(() => { - return {data: {isServiceable: true}}; + // Arrange + const { wrapper } = setupMocks({}); + + wrapper.vm.validateZip = jest.fn().mockImplementation(() => { + return { data: { isServiceable: true } }; + }); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ''; + }); + const vinLookup = { data: { vehicle: { carId: "TESTID1" } } } + wrapper.vm.lookupVin = jest.fn().mockImplementation(() => { + return { catch: () => vinLookup }; + }); + wrapper.vm.previouslyEnteredCarId = "TESTID1"; + wrapper.vm.navigateForward = jest.fn(); + + //Act + licensePlateLookup.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "license-plate-lookup" } }, + undefined, + (c) => c(wrapper.vm) + ); + + await wrapper.vm.forwardButtonAction(); + + //Assert + expect(wrapper.vm.navigateForward).toHaveBeenCalled(); + expect(wrapper.vm.isCarIdDifferent).toEqual(true); + }); }); - wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { - return ''; - }); - const vinLookup = {data: {vehicle: {carId: "TESTID"}}} - wrapper.vm.lookupVin = jest.fn().mockImplementation(() => { - return {catch: () => vinLookup}; + + describe("navigateForward", () => { + test("NavigateAfterSave should be called if isCarIdDifferent is true and isSelectedGlassAvailableForVehicle is false when navigateForward is called", async () => { + + // Arrange + const { wrapper } = setupMocks({}); + + //Act + wrapper.vm.isCarIdDifferent = true; + wrapper.vm.isSelectedGlassAvailableForVehicle = false; + wrapper.vm.$router.navigateAfterSave = jest.fn(); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ''; + }); + store.dispatch = jest.fn(); + + await wrapper.vm.navigateForward(); + + //Assert + expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); + }); + + test("navigateAfterSaveToHeritageFunnel should be called if isCarIdDifferent is false or isSelectedGlassAvailableForVehicle is true when navigateForward is called", async () => { + + // Arrange + const { wrapper } = setupMocks({}); + + //Act + wrapper.vm.isCarIdDifferent = false; + wrapper.vm.$refs.loadingModal.showModal = jest.fn(); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ''; + }); + navigateToHeritage.navigateAfterSaveToHeritageFunnel = jest.fn(); + await wrapper.vm.navigateForward(); + + //Assert + expect(navigateToHeritage.navigateAfterSaveToHeritageFunnel).toHaveBeenCalled(); + }); }); - wrapper.vm.navigateForward = jest.fn(); - - //Act - licensePlateLookup.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "license-plate-lookup" } }, - undefined, - (c) => c(wrapper.vm) - ); - - await wrapper.vm.forwardButtonAction(); - - //Assert - expect(wrapper.vm.navigateForward).toHaveBeenCalled(); - expect(wrapper.vm.isCarIdDifferent).toEqual(false); }); -}); -describe("license-plate-lookup.vue", () => { - test("Function should stop and datam isRegistrationZipServicable should be set to false when service zip entered returns false on forwardButtonAction click", async () => { + describe("button text", () => { + test("Button Text should revert to initial value when licensePlate textfield has new text", async () => { - // Arrange - const { wrapper } = setupMocks({}); - - wrapper.vm.validateZip = jest.fn().mockImplementation(() => { - return {data: {isServiceable: false}}; + // Arrange + const { wrapper } = setupMocks({}); + + //Act + wrapper.vm.licensePlate = "NEWPLATE"; + wrapper.vm.getCmsContent = jest.fn(); + wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); + await wrapper.vm.$nextTick(); + + //Assert + expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled(); }); - wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { - return ''; - }); - wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn(); - //Act - licensePlateLookup.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "license-plate-lookup" } }, - undefined, - (c) => c(wrapper.vm) - ); - - await wrapper.vm.forwardButtonAction(); - //Assert - expect(wrapper.vm.isRegistrationZipServicable).toEqual(false); - }); -}); + test("Button Text should revert to initial value when registrationZip textfield has new text", async () => { -describe("license-plate-lookup.vue", () => { - test("Function should stop and datam isCarIdDifferent should be set to true when carId entered doesn't match store carId or previously entered carId on forwardButtonAction click", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - wrapper.vm.validateZip = jest.fn().mockImplementation(() => { - return {data: {isServiceable: true}}; + // Arrange + const { wrapper } = setupMocks({}); + + //Act + wrapper.vm.registrationZip = "55555"; + wrapper.vm.getCmsContent = jest.fn(); + wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); + await wrapper.vm.$nextTick(); + + //Assert + expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled(); }); - wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { - return ''; - }); - const vinLookup = {data: {vehicle: {carId: "TESTID1"}}} - wrapper.vm.lookupVin = jest.fn().mockImplementation(() => { - return {catch: () => vinLookup}; + + test("Button Text should revert to initial value when serviceZip textfield has new text", async () => { + + // Arrange + const { wrapper } = setupMocks({}); + + //Act + wrapper.vm.serviceZip = "55555"; + wrapper.vm.getCmsContent = jest.fn(); + wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); + await wrapper.vm.$nextTick(); + + //Assert + expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled(); }); - wrapper.vm.$refs.funnelFooter.removeLoader = jest.fn(); - wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); + }) - //Act - licensePlateLookup.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "license-plate-lookup" } }, - undefined, - (c) => c(wrapper.vm) - ); - - await wrapper.vm.forwardButtonAction(); - - //Assert - expect(wrapper.vm.isCarIdDifferent).toEqual(true); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("Navigate forward should be called and isCarId should be set to true when carId entered matches previously entered carId and rest of data entered matches store data on forwardButtonAction click", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - wrapper.vm.validateZip = jest.fn().mockImplementation(() => { - return {data: {isServiceable: true}}; + describe("miscellaneous", () => { + test("CarId set, arePagePrerequisitesValid should be true ", async () => { + //Arrange + const { wrapper } = setupMocks({}); + + //Act + licensePlateLookup.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "license-plate-lookup" } }, + undefined, + (c) => c(wrapper.vm) + ); + + let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); + await nextTick(); + + //Assert + expect(arePagePrerequisitesValid).toBe(true); }); - wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { - return ''; - }); - const vinLookup = {data: {vehicle: {carId: "TESTID1"}}} - wrapper.vm.lookupVin = jest.fn().mockImplementation(() => { - return {catch: () => vinLookup}; + + test("Dispatch reset damage and dependencies should be called if isCarIdDifferent is true and isSelectedGlassAvailableForVehicle is false when updateCustomerInfo is called", async () => { + + // Arrange + const { wrapper } = setupMocks({}); + + //Act + wrapper.vm.isCarIdDifferent = true; + wrapper.vm.isSelectedGlassAvailableForVehicle = false; + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { + return ''; + }); + store.commit = jest.fn(); + store.dispatch = jest.fn(); + + const vehicleInfo = { year: "2020", make: "honda", model: "civic", style: "2 door", carId: "TestId", category: "testCat", imageUrl: "image.jpg", imageVifNumber: "123", imageColor: "blue" } + await wrapper.vm.updateCustomerInfo('vin', vehicleInfo, 'registrationState'); + + //Assert + expect(store.dispatch).toHaveBeenCalled(); }); - wrapper.vm.previouslyEnteredCarId = "TESTID1"; - wrapper.vm.navigateForward = jest.fn(); - //Act - licensePlateLookup.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "license-plate-lookup" } }, - undefined, - (c) => c(wrapper.vm) - ); - - await wrapper.vm.forwardButtonAction(); + test("dispatch non blocking store action called on validate zip", async () => { - //Assert - expect(wrapper.vm.navigateForward).toHaveBeenCalled(); - expect(wrapper.vm.isCarIdDifferent).toEqual(true); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("Button Text should revert to initial value when licensePlate textfield has new text", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - wrapper.vm.licensePlate = "NEWPLATE"; - wrapper.vm.getCmsContent = jest.fn(); - wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); - await wrapper.vm.$nextTick(); - - //Assert - expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled(); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("Button Text should revert to initial value when registrationZip textfield has new text", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - wrapper.vm.registrationZip = "55555"; - wrapper.vm.getCmsContent = jest.fn(); - wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); - await wrapper.vm.$nextTick(); - - //Assert - expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled(); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("Button Text should revert to initial value when serviceZip textfield has new text", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - wrapper.vm.serviceZip = "55555"; - wrapper.vm.getCmsContent = jest.fn(); - wrapper.vm.$refs.funnelFooter.updateButtonText = jest.fn(); - await wrapper.vm.$nextTick(); - - //Assert - expect(wrapper.vm.$refs.funnelFooter.updateButtonText).toHaveBeenCalled(); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("Dispatch reset damage and dependencies should be called if isCarIdDifferent is true and isSelectedGlassAvailableForVehicle is false when updateCustomerInfo is called", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - wrapper.vm.isCarIdDifferent = true; - wrapper.vm.isSelectedGlassAvailableForVehicle = false; - wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { - return ''; + // Arrange + const { wrapper } = setupMocks({}); + + //Act + await wrapper.vm.validateZip("12345"); + + + //Assert + expect(baseMixin.methods.dispatchStoreAction).toHaveBeenCalled(); }); - store.commit = jest.fn(); - store.dispatch = jest.fn(); - const vehicleInfo = {year: "2020", make: "honda", model: "civic", style: "2 door", carId: "TestId", category: "testCat", imageUrl: "image.jpg", imageVifNumber: "123", imageColor: "blue"} - await wrapper.vm.updateCustomerInfo('vin', vehicleInfo, 'registrationState'); + test("dispatch non blocking store action called on lookup vin", async () => { - //Assert - expect(store.dispatch).toHaveBeenCalled(); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("NavigateAfterSave should be called if isCarIdDifferent is true and isSelectedGlassAvailableForVehicle is false when navigateForward is called", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - wrapper.vm.isCarIdDifferent = true; - wrapper.vm.isSelectedGlassAvailableForVehicle = false; - wrapper.vm.$router.navigateAfterSave = jest.fn(); - wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { - return ''; + // Arrange + const { wrapper } = setupMocks({}); + + //Act + await wrapper.vm.lookupVin("zzz123fqsfwg"); + + + //Assert + expect(baseMixin.methods.dispatchStoreAction).toHaveBeenCalled(); }); - store.dispatch = jest.fn(); - - await wrapper.vm.navigateForward(); - - //Assert - expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); - }); + }) }); -describe("license-plate-lookup.vue", () => { - test("navigateAfterSaveToHeritageFunnel should be called if isCarIdDifferent is false or isSelectedGlassAvailableForVehicle is true when navigateForward is called", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - wrapper.vm.isCarIdDifferent = false; - wrapper.vm.$refs.loadingModal.showModal = jest.fn(); - wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => { - return ''; - }); - navigateToHeritage.navigateAfterSaveToHeritageFunnel = jest.fn(); - await wrapper.vm.navigateForward(); - - //Assert - expect(navigateToHeritage.navigateAfterSaveToHeritageFunnel).toHaveBeenCalled(); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("dispatch non blocking store action called on validate zip", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - await wrapper.vm.validateZip("12345"); - - - //Assert - expect(baseMixin.methods.dispatchStoreAction).toHaveBeenCalled(); - }); -}); - -describe("license-plate-lookup.vue", () => { - test("dispatch non blocking store action called on lookup vin", async () => { - - // Arrange - const { wrapper } = setupMocks({}); - - //Act - await wrapper.vm.lookupVin("zzz123fqsfwg"); - - - //Assert - expect(baseMixin.methods.dispatchStoreAction).toHaveBeenCalled(); - }); -}); - - - function setupMocks({ pageHeaderWidgetHeaderText = {}, mountOptionsMockData = { From c648512029776f8be613e7cf89b8e88343b04d4e Mon Sep 17 00:00:00 2001 From: Katie Date: Wed, 25 May 2022 16:16:02 -0400 Subject: [PATCH 02/18] CSR-416 Restructure vehicle-damage.spec.js and add claim registration/back button --- .../vehicle-damage/vehicle-damage.spec.js | 1215 ++++++++--------- src/layouts/vehicle-damage/vehicle-damage.vue | 2 +- 2 files changed, 603 insertions(+), 614 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index 0ce0fe085..0df5e2c28 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -51,650 +51,639 @@ jest.mock("@/store", () => ({ }, eventBusItem: jest.fn(), damage: { - glassToReplace: [] + glassToReplace: [] }, }, })); describe("vehicle-damage.vue", () => { - test("CarId set, arePagePrerequisitesValid should be true ", async () => { - //Arrange - const { wrapper } = setupMocks({}); + describe("navigation", () => { + test("BackButtonAction triggers a router.navigate change", async () => { - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); + //Arrange + const { wrapper } = setupMocks({}); - let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); - await nextTick(); + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); - //Assert - expect(arePagePrerequisitesValid).toBe(true); - }); -}); + wrapper.vm.backButtonAction(); -describe("vehicle-damage.vue", () => { - test("BackButtonAction triggers a router.navigate change", async () => { + //Assert + expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.backButtonAction(); - - //Assert - expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); - - }); -}); - -describe("vehicle-damage.vue", () => { - test("Replace several pieces of glass on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => { - //Arrange - const partsData = { - partsOrQuestions: [{ - glassName: "Single", - glassLocation: "Windshield", - parts: null, - partQuestions: [{ - questionSequence: 1, - questionText: "Is your vehicle equipped with a heated steering wheel?", - answers: [{ - answerText: "Yes", - nextQuestionSequence: null, - answerResult: "FW04957" - }, - { - answerText: "No", - nextQuestionSequence: 2, - answerResult: "" - }] - }, - { - questionSequence: 2, - questionText: "Is your vehicle equipped with a remote start?", - answers: [{ - answerText: "Yes", - nextQuestionSequence: null, - answerResult: "FW04181" - }, - { - answerText: "No", - nextQuestionSequence: null, - answerResult: "FW04179" - }] - }] - }] - }; - - const { wrapper } = setupMocks({ - pageHeaderWidgetHeaderText: "", - mountOptionsMockData: { - router: { navigateAfterSave: jest.fn(), }, - actionList: [{ actionName: storeActions.GET_PARTS_OR_QUESTIONS, data: partsData, },], - store: { - getters: { - vehicle: {}, - payment: { insuranceCoverage: { isVerified: false } }, - }, - }, - }, }); - wrapper.vm.selectedDamageLocations = ["Windshield", "SideDoor", "RearWindow"]; - wrapper.vm.selectedWindshieldOptions = { - selectedWindshieldChipCount : null, - selectedWindshieldReplaceOptions : ["Single"], - selectedWindshieldDamageType: ["Replace"] - }; - - wrapper.vm.sideDoorOptionsData = { - selectedDoorSides: ["DriverSide", "PassengerSide"], - selectedDriverSideReplaceOptions: ["Back"], - selectedPassengerSideReplaceOptions: ["Quarter"] - }; - - wrapper.vm.selectedRearReplaceOptions = ["Stationary"]; - - const expectedGlassToReplace = [{location: "Windshield", name: "Single"}, {location: "Driver", name: "Back"}, - {location: "Passenger", name: "Quarter"}, {location: "Rear", name: "Stationary"}]; - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - await wrapper.vm.forwardButtonAction(); - - //Assert - expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); - expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace); - expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false); - expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace); - }); -}); - -describe("vehicle-damage.vue", () => { - test("Windshield replace with multiple parts on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => { - //Arrange - const partsData = { partsOrQuestions: [ - { - glassLocation: "Windshield", - glassName: "Single", - partQuestions: null, - parts: [ - { - color: "Green Tint, Green Shade", - description: "rain sensor, solar", - partNumber: "FW02728GGYN", - requiresCapabilityQuestions: false, - requiresRecalibration: false - }, - { - color: "Green Tint, Green Shade", - description: "rain sensor, solar, hydrophobic coating", - partNumber: "FW02760GGYN", - requiresCapabilityQuestions: false, - requiresRecalibration: false - } - ]}, - { - glassName: "Stationary", - glassLocation: "Rear", - parts: [ - { - partNumber: "DB09626GTYN", - description: "heated glass, solar, antenna", - color: "Green Tint", - requiresRecalibration: false, - requiresCapabilityQuestions: false, - childParts: null + test("Replace several pieces of glass on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => { + //Arrange + const partsData = { + partsOrQuestions: [{ + glassName: "Single", + glassLocation: "Windshield", + parts: null, + partQuestions: [{ + questionSequence: 1, + questionText: "Is your vehicle equipped with a heated steering wheel?", + answers: [{ + answerText: "Yes", + nextQuestionSequence: null, + answerResult: "FW04957" }, { - partNumber: "DB09821GTYN", - description: "heated glass, solar, antenna, onstar", - color: "Green Tint", - requiresRecalibration: false, - requiresCapabilityQuestions: false, - childParts: null - } - ], - "partQuestions": null - } - ]}; - - const { wrapper } = setupMocks({ - pageHeaderWidgetHeaderText: "", - mountOptionsMockData: { - router: { navigateAfterSave: jest.fn(), }, - actionList: [{ actionName: storeActions.GET_PARTS_OR_QUESTIONS, data: partsData, },], - store: { - getters: { - vehicle: {}, - payment: { insuranceCoverage: { isVerified: false } }, + answerText: "No", + nextQuestionSequence: 2, + answerResult: "" + }] }, - }, - }, - }); - - wrapper.vm.selectedDamageLocations = ["Windshield"]; - wrapper.vm.selectedWindshieldOptions = { - selectedWindshieldChipCount : null, - selectedWindshieldReplaceOptions : ["Single"], - selectedWindshieldDamageType: ["Replace"] - }; - - const expectedGlassToReplace = [{location: "Windshield", name: "Single"},]; - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - await wrapper.vm.forwardButtonAction(); - - //Assert - expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); - expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace); - expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false); - expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace); - }); -}); - -describe("vehicle-damage.vue", () => { - test("isWindshieldDamageLocation is true when windshield is selected", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.selectedDamageLocations = ["Windshield"]; - - //Assert - expect(wrapper.vm.isWindshieldDamageLocation).toEqual(true); - }); -}); - -describe("vehicle-damage.vue", () => { - test("isSideDoorDamageLocation is true Side door is selected", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.selectedDamageLocations = ["Sidedoor"]; - - //Assert - expect(wrapper.vm.isSideDoorDamageLocation).toEqual(true); - }); -}); - - -describe("vehicle-damage.vue", () => { - test("isRearWindowDamageLocation is true if Rear Window damage is selected", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.selectedDamageLocations = ["RearWindow"]; - - //Assert - expect(wrapper.vm.isRearWindowDamageLocation).toEqual(true); - }); -}); - -describe("vehicle-damage.vue", () => { - test("isWindshieldRepair is true if windshield repair is selected", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.selectedDamageLocations = ["Windshield"]; - wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: ["Repair"]}; - - //Assert - expect(wrapper.vm.isWindshieldRepair).toEqual(true); - }); -}); - -describe("vehicle-damage.vue", () => { - test("isWindshieldRepair is false if windshield damage is not selected", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.selectedDamageLocations = ["SideDoor"]; - wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: ["Repair"]}; - - //Assert - expect(wrapper.vm.isWindshieldRepair).toEqual(false); - }); -}); - -describe("vehicle-damage.vue", () => { - test("isDriverSideReplace is true if side door driver is selected", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.selectedDamageLocations = ["Sidedoor"]; - wrapper.vm.sideDoorOptionsData = { selectedDoorSides: ["DriverSide"]}; - - //Assert - expect(wrapper.vm.isDriverSideReplace).toEqual(true); - }); -}); - -describe("vehicle-damage.vue", () => { - test("isPassengerSideReplace is true if side door passenger selected", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.selectedDamageLocations = ["Sidedoor"]; - wrapper.vm.sideDoorOptionsData = { selectedDoorSides: ["PassengerSide"]}; - - //Assert - expect(wrapper.vm.isPassengerSideReplace).toEqual(true); - }); -}); - -describe("vehicle-damage.vue", () => { - test("Call invalidation, ResetPartsAndState should be called", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - wrapper.vm.resetDependentState(); - - //Assert - expect(store.dispatch).toBeCalledWith(storeActions.RESET_PARTS_STATE_AND_DEPENDENCIES) - - }); -}); - -const damageLocations = [["Windshield", [damageLocationsSelected.WINDSHIELD]], - ["Driver", [damageLocationsSelected.SIDEDOOR]], - ["Passenger", [damageLocationsSelected.SIDEDOOR]], - ["Rear", [damageLocationsSelected.REARWINDOW]]]; -describe("vehicle-damage.vue", () => { - test.each(damageLocations)("getDamageLocationsFromStore for %s returns expected %s", async (damageLocation, expectedGlass) => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{location: damageLocation}] }, isRepair: true}; - - var glassSelections = wrapper.vm.getDamageLocationsFromStore(); - - //Assert - expect(glassSelections).toEqual(expectedGlass); - - }); -}); - -const storeWindshieldOptions = [[1, false, "Windshield", "Single", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], - selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.SINGLE]}], - [2, false, "Windshield", "Driver", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], - selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.DRIVER]}], - [3, false, "Windshield", "Passenger", { selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], - selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.PASSENGER]}], - [4, true, "", "", { selectedWindshieldDamageType: [damageLocationsSelected.REPAIR], - selectedWindshieldChipCount: [2], selectedWindshieldReplaceOptions: []}] - ]; -describe("vehicle-damage.vue", () => { - test.each(storeWindshieldOptions)("getWindshieldOptionsFromStore test #%s", async (testNum, isRepair, damageLocation, damageName, expectedWindshieldOptions) => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - store.getters = { - vehicle: - { carId: "C0000000" }, - eventBusItem: jest.fn(), - damage: - { - glassToReplace: [{location: damageLocation, name: damageName}], - isRepair: isRepair, - numberOfChips: 2 - }, + { + questionSequence: 2, + questionText: "Is your vehicle equipped with a remote start?", + answers: [{ + answerText: "Yes", + nextQuestionSequence: null, + answerResult: "FW04181" + }, + { + answerText: "No", + nextQuestionSequence: null, + answerResult: "FW04179" + }] + }] + }] }; - var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore(); - - //Assert - expect(windshieldSelections).toEqual(expectedWindshieldOptions); + const { wrapper } = setupMocks({ + pageHeaderWidgetHeaderText: "", + mountOptionsMockData: { + router: { navigateAfterSave: jest.fn(), }, + actionList: [{ actionName: storeActions.GET_PARTS_OR_QUESTIONS, data: partsData, },], + store: { + getters: { + vehicle: {}, + payment: { insuranceCoverage: { isVerified: false } }, + }, + }, + }, + }); + + wrapper.vm.selectedDamageLocations = ["Windshield", "SideDoor", "RearWindow"]; + wrapper.vm.selectedWindshieldOptions = { + selectedWindshieldChipCount: null, + selectedWindshieldReplaceOptions: ["Single"], + selectedWindshieldDamageType: ["Replace"] + }; + + wrapper.vm.sideDoorOptionsData = { + selectedDoorSides: ["DriverSide", "PassengerSide"], + selectedDriverSideReplaceOptions: ["Back"], + selectedPassengerSideReplaceOptions: ["Quarter"] + }; + + wrapper.vm.selectedRearReplaceOptions = ["Stationary"]; + + const expectedGlassToReplace = [{ location: "Windshield", name: "Single" }, { location: "Driver", name: "Back" }, + { location: "Passenger", name: "Quarter" }, { location: "Rear", name: "Stationary" }]; + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + await wrapper.vm.forwardButtonAction(); + + //Assert + expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); + expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace); + expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false); + expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace); + }); + + test("Windshield replace with multiple parts on ForwardButtonAction triggers a router.navigateAfterSave and saves selections to store", async () => { + //Arrange + const partsData = { + partsOrQuestions: [ + { + glassLocation: "Windshield", + glassName: "Single", + partQuestions: null, + parts: [ + { + color: "Green Tint, Green Shade", + description: "rain sensor, solar", + partNumber: "FW02728GGYN", + requiresCapabilityQuestions: false, + requiresRecalibration: false + }, + { + color: "Green Tint, Green Shade", + description: "rain sensor, solar, hydrophobic coating", + partNumber: "FW02760GGYN", + requiresCapabilityQuestions: false, + requiresRecalibration: false + } + ] + }, + { + glassName: "Stationary", + glassLocation: "Rear", + parts: [ + { + partNumber: "DB09626GTYN", + description: "heated glass, solar, antenna", + color: "Green Tint", + requiresRecalibration: false, + requiresCapabilityQuestions: false, + childParts: null + }, + { + partNumber: "DB09821GTYN", + description: "heated glass, solar, antenna, onstar", + color: "Green Tint", + requiresRecalibration: false, + requiresCapabilityQuestions: false, + childParts: null + } + ], + "partQuestions": null + } + ] + }; + + const { wrapper } = setupMocks({ + pageHeaderWidgetHeaderText: "", + mountOptionsMockData: { + router: { navigateAfterSave: jest.fn(), }, + actionList: [{ actionName: storeActions.GET_PARTS_OR_QUESTIONS, data: partsData, },], + store: { + getters: { + vehicle: {}, + payment: { insuranceCoverage: { isVerified: false } }, + }, + }, + }, + }); + + wrapper.vm.selectedDamageLocations = ["Windshield"]; + wrapper.vm.selectedWindshieldOptions = { + selectedWindshieldChipCount: null, + selectedWindshieldReplaceOptions: ["Single"], + selectedWindshieldDamageType: ["Replace"] + }; + + const expectedGlassToReplace = [{ location: "Windshield", name: "Single" },]; + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + await wrapper.vm.forwardButtonAction(); + + //Assert + expect(wrapper.vm.$router.navigateAfterSave).toHaveBeenCalled(); + expect(wrapper.vm.selectedGlassToReplace()).toEqual(expectedGlassToReplace); + expect(store.commit).toBeCalledWith(storeMutations.UPDATE_IS_REPAIR, false); + expect(store.commit).toBeCalledWith(storeMutations.UPDATE_GLASS_TO_REPLACE, expectedGlassToReplace); + }); + }); -}); -const driverDoorSides = [["Driver", "Front", [damageLocationsSelected.FRONT]], - ["Driver", "Back", [damageLocationsSelected.BACK]], - ["Driver", "Vent", [damageLocationsSelected.VENT]], - ["Driver", "Quarter", [damageLocationsSelected.QUARTER]] - ]; -describe("vehicle-damage.vue", () => { - test.each(driverDoorSides)("getDriverSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{location: damageLocation, name: damageName}] }, isRepair: true}; - - var glassSelections = wrapper.vm.getDriverSideReplaceOptionsFromStore(); - - //Assert - expect(glassSelections).toEqual(expectedGlass); - - }); -}); - -const passengerDoorSides = [["Passenger", "Front", [damageLocationsSelected.FRONT]], - ["Passenger", "Back", [damageLocationsSelected.BACK]], - ["Passenger", "Vent", [damageLocationsSelected.VENT]], - ["Passenger", "Quarter", [damageLocationsSelected.QUARTER]] - ]; -describe("vehicle-damage.vue", () => { - test.each(passengerDoorSides)("getPassengerSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{location: damageLocation, name: damageName}] }, isRepair: true}; - - var glassSelections = wrapper.vm.getPassengerSideReplaceOptionsFromStore(); - - //Assert - expect(glassSelections).toEqual(expectedGlass); - - }); -}); - -const rearReplaceOptions = [["Rear", "Stationary", [damageLocationsSelected.STATIONARY]], - ["Rear", "Slider", [damageLocationsSelected.SLIDER]] - ]; -describe("vehicle-damage.vue", () => { - test.each(rearReplaceOptions)("getRearReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - - store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{location: damageLocation, name: damageName}] }, isRepair: true}; - - var glassSelections = wrapper.vm.getRearReplaceOptionsFromStore(); - - //Assert - expect(glassSelections).toEqual(expectedGlass); - - }); -}); - -describe("vehicle-damage.vue", () => { - test("when displayVehicleChangeAlert router params is true, the alert: 'vehicleChangeAlert' should be visible", () => { - // Arrange & Act - const { wrapper } = setupMocks({ - mountOptionsMockData: { - route: { - params: { - [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: true + describe("alert", () => { + test("when displayVehicleChangeAlert router params is true, the alert: 'vehicleChangeAlert' should be visible", () => { + // Arrange & Act + const { wrapper } = setupMocks({ + mountOptionsMockData: { + route: { + params: { + [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: true + } } } - } + }); + // Assert + expect(wrapper.findComponent({ ref: 'vehicleChangeAlert' }).isVisible()).toBe(true); }); - // Assert - expect(wrapper.findComponent({ref: 'vehicleChangeAlert'}).isVisible()).toBe(true); - }) -}); -describe("vehicle-damage.vue", () => { - test("when displayVehicleChangeAlert router params is false, the alert: 'vehicleChangeAlert' should not be visible", () => { - // Arrange & Act - const { wrapper } = setupMocks({ - mountOptionsMockData: { - route: { - params: { - [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: false + test("when displayVehicleChangeAlert router params is false, the alert: 'vehicleChangeAlert' should not be visible", () => { + // Arrange & Act + const { wrapper } = setupMocks({ + mountOptionsMockData: { + route: { + params: { + [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: false + } } } - } + }); + // Assert + expect(wrapper.findComponent({ ref: 'vehicleChangeAlert' }).isVisible()).toBe(false); }); - // Assert - expect(wrapper.findComponent({ref: 'vehicleChangeAlert'}).isVisible()).toBe(false); - }) -}); -describe("vehicle-damage.vue", () => { - test("when displayVehicleChangeAlert router params is undefined, the alert: 'vehicleChangeAlert' should not be visible", () => { - // Arrange & Act - const { wrapper } = setupMocks({ - mountOptionsMockData: { - route: { - params: { - [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: undefined + test("when displayVehicleChangeAlert router params is undefined, the alert: 'vehicleChangeAlert' should not be visible", () => { + // Arrange & Act + const { wrapper } = setupMocks({ + mountOptionsMockData: { + route: { + params: { + [routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]: undefined + } } } - } - }); - // Assert - expect(wrapper.findComponent({ref: 'vehicleChangeAlert'}).isVisible()).toBe(false); - }) -}); - -describe("vehicle-damage.vue wasDelayedClaimRegistration", () => { - test.todo("if wasDelayedClaimRegistration, should hide back button") -}); - -// THE FOLLOWING TEST IS NOT NECESSARILY REQUIRED FOR COVERAGE -// BUT KEEP FOR AN EXAMPLE OF A VALIDATION TEST -// -describe("vehicle-damage.vue", () => { - test("when validation rules are set they should validate correctly", async () => { - - //Arrange - const { wrapper } = setupMocks({}); - - //Act - vehicleDamage.beforeRouteEnter.call( - wrapper.vm, - { query: { fmgPage: "vehicle-damage" } }, - undefined, - (c) => c(wrapper.vm) - ); - const testNull = validate( "", "replace-options-required"); - const testString = validate( "sldfj", "replace-options-required"); - - //Assert - testNull.then(function(data) { - expect(data.valid).toEqual(false); - }); - testString.then(function(data) { - expect(data.valid).toEqual(true); - }); - + }); + // Assert + expect(wrapper.findComponent({ ref: 'vehicleChangeAlert' }).isVisible()).toBe(false); + }) }); + + describe("glass selections and corresponding variables", () => { + test("isWindshieldDamageLocation is true when windshield is selected", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.selectedDamageLocations = ["Windshield"]; + + //Assert + expect(wrapper.vm.isWindshieldDamageLocation).toEqual(true); + }); + + test("isSideDoorDamageLocation is true Side door is selected", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.selectedDamageLocations = ["Sidedoor"]; + + //Assert + expect(wrapper.vm.isSideDoorDamageLocation).toEqual(true); + }); + + test("isRearWindowDamageLocation is true if Rear Window damage is selected", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.selectedDamageLocations = ["RearWindow"]; + + //Assert + expect(wrapper.vm.isRearWindowDamageLocation).toEqual(true); + }); + + test("isWindshieldRepair is true if windshield repair is selected", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.selectedDamageLocations = ["Windshield"]; + wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: ["Repair"] }; + + //Assert + expect(wrapper.vm.isWindshieldRepair).toEqual(true); + }); + + test("isWindshieldRepair is false if windshield damage is not selected", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.selectedDamageLocations = ["SideDoor"]; + wrapper.vm.selectedWindshieldOptions = { selectedWindshieldDamageType: ["Repair"] }; + + //Assert + expect(wrapper.vm.isWindshieldRepair).toEqual(false); + }); + + test("isDriverSideReplace is true if side door driver is selected", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.selectedDamageLocations = ["Sidedoor"]; + wrapper.vm.sideDoorOptionsData = { selectedDoorSides: ["DriverSide"] }; + + //Assert + expect(wrapper.vm.isDriverSideReplace).toEqual(true); + }); + + test("isPassengerSideReplace is true if side door passenger selected", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.selectedDamageLocations = ["Sidedoor"]; + wrapper.vm.sideDoorOptionsData = { selectedDoorSides: ["PassengerSide"] }; + + //Assert + expect(wrapper.vm.isPassengerSideReplace).toEqual(true); + }); + }); + + describe("state validations", () => { + test("CarId set, arePagePrerequisitesValid should be true ", async () => { + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + let arePagePrerequisitesValid = wrapper.vm.arePagePrerequisitesValid(); + await nextTick(); + + //Assert + expect(arePagePrerequisitesValid).toBe(true); + }); + + test("Call invalidation, ResetPartsAndState should be called", async () => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + wrapper.vm.resetDependentState(); + + //Assert + expect(store.dispatch).toBeCalledWith(storeActions.RESET_PARTS_STATE_AND_DEPENDENCIES) + + }); + }); + + describe("input validations", () => { + // THE FOLLOWING TEST IS NOT NECESSARILY REQUIRED FOR COVERAGE + // BUT KEEP FOR AN EXAMPLE OF A VALIDATION TEST + test("when validation rules are set they should validate correctly", async () => { + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + const testNull = validate("", "replace-options-required"); + const testString = validate("sldfj", "replace-options-required"); + + //Assert + testNull.then(function (data) { + expect(data.valid).toEqual(false); + }); + testString.then(function (data) { + expect(data.valid).toEqual(true); + }); + }); + }); + + describe("get glass options from store", () => { + const damageLocations = [["Windshield", [damageLocationsSelected.WINDSHIELD]], + ["Driver", [damageLocationsSelected.SIDEDOOR]], + ["Passenger", [damageLocationsSelected.SIDEDOOR]], + ["Rear", [damageLocationsSelected.REARWINDOW]]]; + test.each(damageLocations)("getDamageLocationsFromStore for %s returns expected %s", async (damageLocation, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{ location: damageLocation }] }, isRepair: true }; + + var glassSelections = wrapper.vm.getDamageLocationsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + }); + + const storeWindshieldOptions = [[1, false, "Windshield", "Single", { + selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.SINGLE] + }], + [2, false, "Windshield", "Driver", { + selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.DRIVER] + }], + [3, false, "Windshield", "Passenger", { + selectedWindshieldDamageType: [damageLocationsSelected.REPLACE], + selectedWindshieldChipCount: [], selectedWindshieldReplaceOptions: [damageLocationsSelected.PASSENGER] + }], + [4, true, "", "", { + selectedWindshieldDamageType: [damageLocationsSelected.REPAIR], + selectedWindshieldChipCount: [2], selectedWindshieldReplaceOptions: [] + }] + ]; + test.each(storeWindshieldOptions)("getWindshieldOptionsFromStore test #%s", async (testNum, isRepair, damageLocation, damageName, expectedWindshieldOptions) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { + vehicle: + { carId: "C0000000" }, + eventBusItem: jest.fn(), + damage: + { + glassToReplace: [{ location: damageLocation, name: damageName }], + isRepair: isRepair, + numberOfChips: 2 + }, + }; + + var windshieldSelections = wrapper.vm.getWindshieldOptionsFromStore(); + + //Assert + expect(windshieldSelections).toEqual(expectedWindshieldOptions); + }); + + const driverDoorSides = [["Driver", "Front", [damageLocationsSelected.FRONT]], + ["Driver", "Back", [damageLocationsSelected.BACK]], + ["Driver", "Vent", [damageLocationsSelected.VENT]], + ["Driver", "Quarter", [damageLocationsSelected.QUARTER]] + ]; + test.each(driverDoorSides)("getDriverSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{ location: damageLocation, name: damageName }] }, isRepair: true }; + + var glassSelections = wrapper.vm.getDriverSideReplaceOptionsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + + }); + + const passengerDoorSides = [["Passenger", "Front", [damageLocationsSelected.FRONT]], + ["Passenger", "Back", [damageLocationsSelected.BACK]], + ["Passenger", "Vent", [damageLocationsSelected.VENT]], + ["Passenger", "Quarter", [damageLocationsSelected.QUARTER]] + ]; + test.each(passengerDoorSides)("getPassengerSideReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{ location: damageLocation, name: damageName }] }, isRepair: true }; + + var glassSelections = wrapper.vm.getPassengerSideReplaceOptionsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + }); + + const rearReplaceOptions = [["Rear", "Stationary", [damageLocationsSelected.STATIONARY]], + ["Rear", "Slider", [damageLocationsSelected.SLIDER]] + ]; + test.each(rearReplaceOptions)("getRearReplaceOptionsFromStore for %s-%s returns expected %s", async (damageLocation, damageName, expectedGlass) => { + + //Arrange + const { wrapper } = setupMocks({}); + + //Act + vehicleDamage.beforeRouteEnter.call( + wrapper.vm, + { query: { fmgPage: "vehicle-damage" } }, + undefined, + (c) => c(wrapper.vm) + ); + + store.getters = { vehicle: { carId: "C0000000" }, eventBusItem: jest.fn(), damage: { glassToReplace: [{ location: damageLocation, name: damageName }] }, isRepair: true }; + + var glassSelections = wrapper.vm.getRearReplaceOptionsFromStore(); + + //Assert + expect(glassSelections).toEqual(expectedGlass); + }); + }) + + describe("hide back button", () => { + test.only("if claim registration is delayed => should hide back button", () => { + // Arrange + const { wrapper } = setupMocks({}); + cookieHelper.getFunnelCookie = jest.spyOn(cookieHelper, "getFunnelCookie").mockReturnValue({ + HasDelayedClaimRegistration: true + }); + + // Assert + expect(wrapper.vm.shouldHideBackButton()).toBe(true); + + }); + + test.todo("if claim is verified => should hide back button") + }); + }); - -function setupMocks({pageHeaderWidgetHeaderText, mountOptionsMockData}) { +function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData }) { var pageHeaderWidgetHeaderTextDefault = {}; var mountOptionsMockDataDefault = { router: { @@ -787,11 +776,11 @@ function setupMocks({pageHeaderWidgetHeaderText, mountOptionsMockData}) { const backGlassOptionsWrapper = wrapper.findComponent({ name: "replaceOptionsQuestion" }); backGlassOptionsWrapper.vm.initializeComponent = - replaceOptionsQuestion.methods.initializeComponent; + replaceOptionsQuestion.methods.initializeComponent; const damageLocationQuestionWrapper = wrapper.findComponent({ name: "damageLocationQuestion" }); damageLocationQuestionWrapper.vm.initializeComponent = - damageLocationQuestion.methods.initializeComponent; + damageLocationQuestion.methods.initializeComponent; wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent; diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index d4e44feb7..266e2ba1a 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -405,7 +405,7 @@ export default { shouldDisplayVehicleChangeAlert() { return this.$route.params[this.routerParams.DISPLAY_VEHICLE_CHANGE_ALERT]; }, - shouldHideBackButton(){ + shouldHideBackButton() { return this.$store.getters.payment.insuranceCoverage.isVerified || getFunnelCookie().HasDelayedClaimRegistration; } }, From 50c2b787e0739486e00f5ba2a1d065518d13a291 Mon Sep 17 00:00:00 2001 From: Katie Date: Wed, 25 May 2022 16:27:50 -0400 Subject: [PATCH 03/18] CSR-416 Add tests --- .../vehicle-damage/vehicle-damage.spec.js | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/src/layouts/vehicle-damage/vehicle-damage.spec.js b/src/layouts/vehicle-damage/vehicle-damage.spec.js index 0df5e2c28..46fa7763e 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.spec.js +++ b/src/layouts/vehicle-damage/vehicle-damage.spec.js @@ -666,24 +666,48 @@ describe("vehicle-damage.vue", () => { }) describe("hide back button", () => { - test.only("if claim registration is delayed => should hide back button", () => { + test("if claim registration is delayed => should hide back button", () => { // Arrange - const { wrapper } = setupMocks({}); - cookieHelper.getFunnelCookie = jest.spyOn(cookieHelper, "getFunnelCookie").mockReturnValue({ - HasDelayedClaimRegistration: true + const { wrapper } = setupMocks({ + funnelCookie: { + HasDelayedClaimRegistration: true + } }); // Assert - expect(wrapper.vm.shouldHideBackButton()).toBe(true); - + expect(wrapper.vm.shouldHideBackButton).toBe(true); }); - test.todo("if claim is verified => should hide back button") - }); + test("if claim is verified => should hide back button", () => { + // Arrange + const { wrapper } = setupMocks({ + mountOptionsMockData: { + router: { navigateAfterSave: jest.fn(), }, + actionList: [{ actionName: storeActions.GET_PARTS_OR_QUESTIONS, data: {}, },], + store: { + getters: { + vehicle: {}, + payment: { insuranceCoverage: { isVerified: true } }, + }, + }, + }, + }) + // Assert + expect(wrapper.vm.shouldHideBackButton).toBe(true); + }) + + test("if claim isn't verified yet => allow user to go back", () => { + // Arrange + const { wrapper } = setupMocks({}); + + // Assert + expect(wrapper.vm.shouldHideBackButton).toBeFalsy(); + }) + }); }); -function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData }) { +function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData, funnelCookie = {} }) { var pageHeaderWidgetHeaderTextDefault = {}; var mountOptionsMockDataDefault = { router: { @@ -740,7 +764,7 @@ function setupMocks({ pageHeaderWidgetHeaderText, mountOptionsMockData }) { settleAllPromises.mockImplementation(() => apiPromise); fetchCmsContentForPage.mockImplementation(() => Promise.resolve()); - cookieHelper.getFunnelCookie = jest.spyOn(cookieHelper, "getFunnelCookie").mockReturnValue({}); + cookieHelper.getFunnelCookie = jest.spyOn(cookieHelper, "getFunnelCookie").mockReturnValue(funnelCookie); //Mock damage initialize methods damageLocationQuestion.methods = { From f1b600b446dfbbe6a63ddba208ca942b26c57fea Mon Sep 17 00:00:00 2001 From: bmauger Date: Thu, 26 May 2022 17:03:52 -0400 Subject: [PATCH 04/18] WIP footer menu modal. --- .../footer-menu-modal.spec.js | 1 + .../footer-menu-modal/footer-menu-modal.vue | 52 ++++++++++++++ .../funnel-footer/funnel-footer.vue | 6 +- .../funnel-header/funnel-header.vue | 6 ++ .../menu-button/menu-button.vue | 70 +++++++++++-------- src/layouts/vehicle-damage/vehicle-damage.vue | 2 +- src/styles/common-styles.scss | 12 +++- src/styles/ux-variables.scss | 4 ++ 8 files changed, 120 insertions(+), 33 deletions(-) create mode 100644 src/common-components/footer-menu-modal/footer-menu-modal.spec.js create mode 100644 src/common-components/footer-menu-modal/footer-menu-modal.vue diff --git a/src/common-components/footer-menu-modal/footer-menu-modal.spec.js b/src/common-components/footer-menu-modal/footer-menu-modal.spec.js new file mode 100644 index 000000000..3d0843e10 --- /dev/null +++ b/src/common-components/footer-menu-modal/footer-menu-modal.spec.js @@ -0,0 +1 @@ +test.todo("some test to be written in the future"); diff --git a/src/common-components/footer-menu-modal/footer-menu-modal.vue b/src/common-components/footer-menu-modal/footer-menu-modal.vue new file mode 100644 index 000000000..929461a53 --- /dev/null +++ b/src/common-components/footer-menu-modal/footer-menu-modal.vue @@ -0,0 +1,52 @@ + + + + + diff --git a/src/common-components/funnel-footer/funnel-footer.vue b/src/common-components/funnel-footer/funnel-footer.vue index 27ee88cb3..4e7ce11c4 100644 --- a/src/common-components/funnel-footer/funnel-footer.vue +++ b/src/common-components/funnel-footer/funnel-footer.vue @@ -1,5 +1,5 @@ diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index d4e44feb7..557de9dae 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -5,7 +5,7 @@ ref="theForm" v-slot="{ meta }" > -
+
- +
@@ -1089,7 +1089,7 @@ import textboxQuestion from "@/common-components/textbox-question/textbox-question"; import dropdownQuestion from "@/common-components/dropdown-question/dropdown-question"; import vinInformation from "@/layouts/vin-lookup/vin-information/vin-information"; - import menuButton from "@/common-components/menu-button/menu-button"; + import menuModal from "@/common-components/menu-modal/menu-modal"; export default { name: "App", components: { @@ -1104,7 +1104,7 @@ textboxQuestion, dropdownQuestion, vinInformation, - menuButton, + menuModal, }, data() { return { diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index d0474d67b..0a30524ec 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -43,9 +43,9 @@ export default { } }, getFooterInfoBoxHeight() { - const footerInfoBox = document.querySelector(".footer #infoBox"); + const footerInfoBox = document.querySelector(".footer#infoBox"); return footerInfoBox ? footerInfoBox.offsetHeight : 0; - } + }, }, computed: { storeActions() { From 07c12f4d8be5272f20814c8c057813cace3afa74 Mon Sep 17 00:00:00 2001 From: bmauger Date: Tue, 31 May 2022 16:58:12 -0400 Subject: [PATCH 18/18] Temporarily exclude menu-modal from unit tests. Remove un-needed code. --- jest.config.js | 1 + .../funnel-footer/funnel-footer.spec.js | 28 ++----------------- .../funnel-footer/funnel-footer.vue | 3 -- .../funnel-header/funnel-header.vue | 1 - .../menu-modal/menu-modal.vue | 2 +- src/layouts/vehicle-damage/vehicle-damage.vue | 2 +- 6 files changed, 5 insertions(+), 32 deletions(-) diff --git a/jest.config.js b/jest.config.js index 839db4378..afe4a8e0e 100644 --- a/jest.config.js +++ b/jest.config.js @@ -29,6 +29,7 @@ module.exports = { "!src/common-components/textbox-question/textbox-question.vue", "!src/ux-components/alert\alert.vue", "!src/helpers/validation-rules.js", + "!src/common-components/menu-modal/menu-modal.vue", // END ], // ! means exclude from coverage. testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"], diff --git a/src/common-components/funnel-footer/funnel-footer.spec.js b/src/common-components/funnel-footer/funnel-footer.spec.js index 198fa5657..d246b602b 100644 --- a/src/common-components/funnel-footer/funnel-footer.spec.js +++ b/src/common-components/funnel-footer/funnel-footer.spec.js @@ -3,30 +3,6 @@ import funnelFooter from "./funnel-footer"; describe("funnel-footer.vue", () => { - it("Should return footer-link class", async () => { - // Act - const r = { - test:"testing", - clientHeight: 10, - offsetHeight: 24, - }; - - global.document.querySelector = jest.fn().mockImplementation(()=> { - return r; - }); - - const wrapper = mount(funnelFooter, { - mixins: [mockMixin] - }); - - // Assert - const link = wrapper.find("a"); - - // Expect - expect(link.attributes('class')).toContain("footer"); - - }); - it("Should emit ForwardClicked on button click", async () => { // Act const wrapper = mount(funnelFooter, { @@ -53,7 +29,7 @@ describe("funnel-footer.vue", () => { mixins: [mockMixin] }); wrapper.vm.updateButtonText('newText'); - + // Assert expect(wrapper.componentVM.customButtontext).toBe('newText'); }); @@ -65,4 +41,4 @@ const mockMixin = { getCmsContent: jest.fn(), getFooterInfoBoxHeight: jest.fn(()=>80) } -} \ No newline at end of file +} diff --git a/src/common-components/funnel-footer/funnel-footer.vue b/src/common-components/funnel-footer/funnel-footer.vue index fb07779f0..ab4796325 100644 --- a/src/common-components/funnel-footer/funnel-footer.vue +++ b/src/common-components/funnel-footer/funnel-footer.vue @@ -63,9 +63,6 @@ export default { document.onkeydown = null; }, computed: { - height () { - return this.$refs.infoBox.clientHeight; - }, backLink(){ return this.getCmsContent(this.cmsWidgetName, 'BackButtonText'); }, diff --git a/src/common-components/funnel-header/funnel-header.vue b/src/common-components/funnel-header/funnel-header.vue index 24e6c53c1..2244a52ab 100644 --- a/src/common-components/funnel-header/funnel-header.vue +++ b/src/common-components/funnel-header/funnel-header.vue @@ -27,7 +27,6 @@ export default { data() { return { displayGlobalAlert: false, - headerHeight: 0, globalAlertMessage: { isDismissible: false, messageCopy: "", diff --git a/src/common-components/menu-modal/menu-modal.vue b/src/common-components/menu-modal/menu-modal.vue index 905c17b63..de26738f0 100644 --- a/src/common-components/menu-modal/menu-modal.vue +++ b/src/common-components/menu-modal/menu-modal.vue @@ -43,8 +43,8 @@ export default { self.isActive = false; }); myModalEl.addEventListener('show.bs.modal', function (event) { - self.isActive = true; self.currentFooterAndHeaderHeight = self.getFooterInfoBoxHeight() + 72; + self.isActive = true; }) }, components: { diff --git a/src/layouts/vehicle-damage/vehicle-damage.vue b/src/layouts/vehicle-damage/vehicle-damage.vue index 557de9dae..d4e44feb7 100644 --- a/src/layouts/vehicle-damage/vehicle-damage.vue +++ b/src/layouts/vehicle-damage/vehicle-damage.vue @@ -5,7 +5,7 @@ ref="theForm" v-slot="{ meta }" > -