From 0af85cb634941be90fc1544ee258dfc8e04bff31 Mon Sep 17 00:00:00 2001 From: Kulbhushan Kaushik Date: Thu, 26 Jan 2023 07:45:22 -0500 Subject: [PATCH 1/2] commit --- .../policy-holder-details.spec.js | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/layouts/policy-holder-details/policy-holder-details.spec.js diff --git a/src/layouts/policy-holder-details/policy-holder-details.spec.js b/src/layouts/policy-holder-details/policy-holder-details.spec.js new file mode 100644 index 00000000..479199f6 --- /dev/null +++ b/src/layouts/policy-holder-details/policy-holder-details.spec.js @@ -0,0 +1,81 @@ +import policyHolderDetails from "@/layouts/policy-holder-details/policy-holder-details.vue"; + +// Supporting files +// Supporting files +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", () => ({ + settleAllPromises: jest.fn(), +})); + +// Mock fetchCmsContentForPage +jest.mock("@/helpers/cms-content-helper", () => ({ + fetchCmsContentForPage: jest.fn(), +})); + + +describe("policy-holder-details.vue", () => { + test("Should render policy-holder-details sub-components (policy holder first name, last name, street address, damageCause etc.)", async () => { + // Arrange + const { wrapper } = setupMocks({}); + // Act + const policyHolderFirstName = wrapper.findComponent({ ref: "policyHolderFirstName" }); + const policyHolderLastName = wrapper.findComponent({ ref: "policyHolderLastName" }); + const addressQuestions = wrapper.findComponent({ ref: "addressQuestions" }); + + // Assert + expect(policyHolderFirstName.exists()).toBe(true); + expect(policyHolderLastName.exists()).toBe(true); + expect(addressQuestions.exists()).toBe(true); + }); +}); + +function setupMocks({ + pageHeaderWidgetHeaderText = {}, + pageFooterWidgetCmsContent = {}, + mountOptionsMockData = {}, +}) { + //Mock api responses + 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); + + const wrapper = shallowMount(policyHolderDetails, mountOptions); + + wrapper.vm.setCmsContent = baseMixin.methods.setCmsContent; + + return { wrapper, apiPromise }; +} + From 8b03a40f7affebb8f097a74c2437150d04fe611c Mon Sep 17 00:00:00 2001 From: Kulbhushan Kaushik Date: Thu, 26 Jan 2023 13:55:16 -0500 Subject: [PATCH 2/2] commit --- .../policy-holder-details.spec.js | 113 ++++++++++++------ 1 file changed, 74 insertions(+), 39 deletions(-) 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 }; } +