import policyDriver from "@/layouts/policy-driver/policy-driver.vue"; import { shallowMount } from "@vue/test-utils"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; import { fetchCmsContentForPage } from "@/helpers/cms-content-helper"; import { settleAllPromises } from "@/helpers/layout-helper"; // 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-driver.vue", () => { describe("component rendering", () => { test("renders funnelHeader component", () => { const { wrapper } = setupMocks(); expect(wrapper.findComponent({ name: "funnelHeader" }).exists()).toBe(true); }); test("renders funnelSubHeader component", () => { const { wrapper } = setupMocks(); expect(wrapper.findComponent({ name: "funnelSubHeader" }).exists()).toBe(true); }); test("renders navbar component", () => { const { wrapper } = setupMocks(); expect(wrapper.findComponent({ name: "insuranceNavBar" }).exists()).toBe(true); }); test("renders Form component", () => { const { wrapper } = setupMocks(); expect(wrapper.findComponent({ name: "Form" }).exists()).toBe(true); }); }); describe("methods", () => { test("arePagePrerequisitesValid returns true", () => { const { wrapper } = setupMocks(); expect(wrapper.vm.arePagePrerequisitesValid()).toBe(true); }); }); }); function setupMocks() { const mockCmsContent = { FunnelHeaderWidget: { Text: "Header" }, FunnelSubHeaderWidget: { Text: "Subheader" }, FunnelFooterWidget: { Text: "Footer" }, }; fetchCmsContentForPage.mockResolvedValue(mockCmsContent); settleAllPromises.mockResolvedValue({ cmsContent: mockCmsContent }); const mountOptions = getMountOptions({ route: { name: "policy-driver", query: {}, params: {} }, router: { navigate: jest.fn(), navigateWithSaving: jest.fn(), navigateWithoutSaving: jest.fn(), }, }); const wrapper = shallowMount(policyDriver, mountOptions); return { wrapper }; }