80 lines
2.6 KiB
JavaScript
80 lines
2.6 KiB
JavaScript
import endorsements from "@/layouts/endorsements/endorsements.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("endorsements.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: "navbar" }).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 mockMixin = {
|
|
methods: {
|
|
getCmsContent: jest.fn((widgetName, fieldName) => {
|
|
return mockCmsContent?.[widgetName]?.[fieldName] ?? "";
|
|
}),
|
|
setCmsContent: jest.fn(),
|
|
},
|
|
};
|
|
|
|
const mountOptions = getMountOptions({
|
|
route: { name: "endorsements", query: {}, params: {} },
|
|
router: {
|
|
navigate: jest.fn(),
|
|
navigateWithSaving: jest.fn(),
|
|
navigateWithoutSaving: jest.fn(),
|
|
},
|
|
mixins: [mockMixin],
|
|
});
|
|
|
|
const wrapper = shallowMount(endorsements, mountOptions);
|
|
|
|
return { wrapper };
|
|
}
|