import { shallowMount } from "@vue/test-utils"; import buttonMain from "./button-main"; import { getMountOptions } from "@/helpers/unit-test-helper.js"; import { nextTick } from "vue"; describe("buttonMain.vue", () => { it("Should return btn-primary class", async () => { // Act const wrapper = shallowMount( buttonMain, setupMocks({ propsData: { isPrimary: true, }, }) ); // Assert const button = wrapper.find("button"); // Expect expect(button.attributes("class")).toContain("btn-primary"); }); it("Should return aria-disabled state", async () => { // Act const wrapper = shallowMount( buttonMain, setupMocks({ propsData: { isDisabled: true, }, }) ); // Assert const button = wrapper.find("button"); // Expect expect(button.attributes()["aria-disabled"]).toEqual("true"); }); it("Should return loader color", async () => { // Act const wrapper = shallowMount( buttonMain, setupMocks({ propsData: { loaderColor: "blue", loaderEnabled: true, }, }) ); // Assert const label = wrapper.find("label"); wrapper.vm.clicked(); await nextTick(); const loader = wrapper.find("loader-stub"); expect(loader.attributes("class")).toContain("blue"); }); it("Should return loader position", async () => { // Act const wrapper = shallowMount( buttonMain, setupMocks({ propsData: { loaderPosition: "right", loaderEnabled: true, }, }) ); // Assert const label = wrapper.find("label"); wrapper.vm.clicked(); await nextTick(); const loader = wrapper.find("loader-stub"); expect(loader.attributes("class")).toContain("right"); }); }); function setupMocks(mountOptionsMockData = {}) { const defaultMountOptions = { route: { query: { issPage: "page-name" } } }; const baseMountOptions = getMountOptions( Object.assign(defaultMountOptions, mountOptionsMockData) ); const allMountOptions = Object.assign(defaultMountOptions, baseMountOptions); return allMountOptions; }