import { shallowMount } from "@vue/test-utils"; import buttonQuestion from "@/common-components/button-question/button-question"; jest.mock("@/store", () => { return {}; }, { virtual: true }); describe("buttonQuestion.vue", () => { it("Should show overflow classes on fieldset if isOverflowScrollable is true", () => { // Act const wrapper = shallowMount(buttonQuestion, { propsData: { isOverflowScrollable: true, groupName: "group-name" } }); // Assert const fieldSet = wrapper.find('fieldset'); expect(fieldSet.classes()).toContain("overflow-scroll"); }); }); describe("buttonQuestion.vue", () => { it("Fieldset classes should contain row if button type is listCard", () => { // Act const wrapper = shallowMount(buttonQuestion, { propsData: { buttonType: "listCard", groupName: "group-name" } }); // Assert const Div = wrapper.find('fieldset div'); expect(Div.classes()).toContain("row"); }); }); describe("buttonQuestion.vue", () => { it("Fieldset classes should contain d-flex if button type is listButtonHorizontal", () => { // Act const wrapper = shallowMount(buttonQuestion, { propsData: { buttonType: "listButtonHorizontal", groupName: "group-name" } }); // Assert const Div = wrapper.find('fieldset div'); expect(Div.classes()).toContain("d-flex"); }); }); describe("buttonQuestion.vue", () => { it("Fieldset classes should contain ui-radio if button type is radio", () => { // Act const wrapper = shallowMount(buttonQuestion, { propsData: { buttonType: "radio", groupName: "group-name" } }); // Assert const Div = wrapper.find('fieldset div'); expect(Div.classes()).toContain("ui-radio"); }); }); // testing a computed property describe("buttonQuestion.vue", () => { it("getColLength should return '12' if prop isWide is set to true", () => { // Act const localThis = { isWide: true } expect(buttonQuestion.computed.getColLength.call(localThis)).toBe("12"); }); }); describe("buttonQuestion.vue", () => { it("getColLength should return '' if prop isWide is set to false", () => { // Act const localThis = { isWide: false, answers: ['a', 'b'], groupName: "group-name" } expect(buttonQuestion.computed.getColLength.call(localThis)).toBe(""); }); }); describe("buttonQuestion.vue", () => { it("Should return answer.Text if prop useTextForValue is true", async () => { // Act const localThis = { useTextForValue: true }; const answer = { 'Name': 'testName', 'Text': 'testText' }; // Assert expect(buttonQuestion.methods.getValue.call(localThis, answer)).toBe('testText'); }); }); describe("buttonQuestion.vue", () => { it("Should return answer.Name if prop useTextForValue is false and answer.Name exists", async () => { // Act const localThis = { useTextForValue: false }; const answer = { 'Name': 'testName', 'Text': 'testText' }; // Assert expect(buttonQuestion.methods.getValue.call(localThis, answer)).toBe('testName'); }); }); function setupMocks(mountOptionsMockData = {}) { const defaultMountOptions = { route: { query: { issPage: 'page-name' } } }; return defaultMountOptions; }