diff --git a/src/layouts/policy-holder-details/policy-holder-details.spec.js b/src/layouts/policy-holder-details/policy-holder-details.spec.js index 479199f6..c6b84096 100644 --- a/src/layouts/policy-holder-details/policy-holder-details.spec.js +++ b/src/layouts/policy-holder-details/policy-holder-details.spec.js @@ -5,9 +5,8 @@ import policyHolderDetails from "@/layouts/policy-holder-details/policy-holder-d import { shallowMount } from '@vue/test-utils'; import { settleAllPromises } from "@/helpers/layout-helper.js"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; -import baseMixin from "@/mixins/base-mixin.js"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; -import { applicationConfig } from "@/constants/application-config"; + // Mock our module for promises. jest.mock("@/helpers/layout-helper.js", () => ({ @@ -21,7 +20,7 @@ jest.mock("@/helpers/cms-content-helper", () => ({ describe("policy-holder-details.vue", () => { - test("Should render policy-holder-details sub-components (policy holder first name, last name, street address, damageCause etc.)", async () => { + test("Should render policy-holder-details sub-components (policy holder first name, last name, street address etc.)", async () => { // Arrange const { wrapper } = setupMocks({}); // Act @@ -36,46 +35,82 @@ describe("policy-holder-details.vue", () => { }); }); -function setupMocks({ - pageHeaderWidgetHeaderText = {}, - pageFooterWidgetCmsContent = {}, - mountOptionsMockData = {}, -}) { - //Mock api responses +describe("navigation", () => { + test("if the back button is clicked, navigate back", async () => { + // Arrange + const { wrapper } = setupMocks({ + }); + + // Act + await wrapper.vm.backButtonAction(); + + // Assert + expect(wrapper.vm.$router.navigate).toHaveBeenCalled(); + }); + + test("if the car entered matches one of the vehicles found navigate forward", async () => { + // Arrange + const mockRegistrationAddress = { + streetAddress: "1234 Main St", + city: "Columbus", + state: "OH", + zipCode: "43215", + }; + + const { wrapper } = setupMocks(); + + await wrapper.setData({ + firstName: "KK", + lastName:"KK", + customerQuestions: { + addressQuestions: mockRegistrationAddress, + }, + }); + + wrapper.vm.navigateForward = jest.fn(); + + // Act + await wrapper.vm.forwardButtonAction(); + + // Assert + expect(wrapper.vm.navigateForward).toHaveBeenCalled(); + + }); + +}); + +function setupMocks() +{ + const wrapper = shallowMount( + policyHolderDetails, + getMountOptions({ + router: { + navigate: jest.fn(), + }, + mainStore: { + order: { + customer: { + emailAddress: "test@test.com", + }, + }, + }, + + }) + ); + const apiResponses = { - cmsContent: { - SiteSubHeaderWidget: pageHeaderWidgetHeaderText, - VehicleBannerWidget: { - GenericVehicleImage: - `${applicationConfig.ISS_DEV_CMS_DOMAIN}/images/default-source/default-album/blurred-image.jpg`, - }, - SiteHeaderWidget: { - LogoImage: - `${applicationConfig.ISS_DEV_CMS_DOMAIN}/images/default-source/default-album/logos/insuranceLogo.jpg`, - }, - SiteFooterWidget: pageFooterWidgetCmsContent, - - }, - }; - - mountOptionsMockData = { - ...mountOptionsMockData, - router: { - navigate: jest.fn(), - }, }; - const apiPromise = Promise.resolve(apiResponses); - - settleAllPromises.mockImplementation(() => apiPromise); - fetchCmsContentForPage.mockImplementation(() => Promise.resolve()); - - const mountOptions = getMountOptions(mountOptionsMockData); + settleAllPromises.mockImplementation(() => apiResponses); - const wrapper = shallowMount(policyHolderDetails, mountOptions); + wrapper.vm.getCmsContent = jest.fn().mockImplementation(() => ""); + wrapper.vm.setCmsContent = jest.fn(); + wrapper.vm.$refs.siteFooter.updateButtonText = jest.fn(); + wrapper.vm.$refs.siteFooter.removeLoader = jest.fn(); + wrapper.vm.$refs.siteFooter.disableForwardButton = jest.fn(); + wrapper.vm.$refs.siteFooter.enableForwardAction = jest.fn(); - wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent; - - return { wrapper, apiPromise }; + return { wrapper }; } +