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..c6b84096 --- /dev/null +++ b/src/layouts/policy-holder-details/policy-holder-details.spec.js @@ -0,0 +1,116 @@ +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 { getMountOptions } from "@/helpers/unit-test-helper.js"; + + +// 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 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); + }); +}); + +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 = { + }; + + settleAllPromises.mockImplementation(() => apiResponses); + + 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(); + + return { wrapper }; +} + +