import { mount } from "@vue/test-utils";
import contentGroupModal from "./content-group-modal";

describe("content-group-modal.vue", () => {
    it("Should display header text when HeaderText is defined in the CMS", async () => {
        const wrapper = mount(contentGroupModal, {
            mixins: [mockMixin],
            props: {
                cmsWidgetName: "test",
            },
            attachTo: document.body,
        });
        expect(wrapper.html()).toEqual(expect.stringContaining(mockCmsContent["HeaderText"]));
    });

    it("Should display subheader text when SubheaderText is defined in the CMS", async () => {
        const wrapper = mount(contentGroupModal, {
            mixins: [mockMixin],
            props: {
                cmsWidgetName: "test",
            },
            attachTo: document.body,
        });
        expect(wrapper.html()).toEqual(expect.stringContaining(mockCmsContent["SubheaderText"]));
    });

    it("Should insert image url when Image is defined in the CMS", async () => {
        const wrapper = mount(contentGroupModal, {
            mixins: [mockMixin],
            props: {
                cmsWidgetName: "test",
            },
            attachTo: document.body,
        });
        expect(wrapper.html()).toEqual(expect.stringContaining(mockCmsContent["Image"]));
    });

    it("Should display body text when BodyText is defined in the CMS", async () => {
        const wrapper = mount(contentGroupModal, {
            mixins: [mockMixin],
            props: {
                cmsWidgetName: "test",
            },
            attachTo: document.body,
        });
        expect(wrapper.html()).toEqual(expect.stringContaining(mockCmsContent["BodyText"]));
    });
});

const mockMixin = {
    methods: {
        getCmsContent: jest.fn((widgetName, cmsFieldName) => {
            return mockCmsContent[cmsFieldName];
        }),
    },
};

const mockCmsContent = {
    HeaderText: "Sample header text here.",
    SubheaderText: "Sample subheader text here.",
    Image: "https://www.sampleImage.sample",
    BodyText: "Sample body text here.",
    FooterText: "Sample footer text here.",
};
