import { shallowMount } from '@vue/test-utils'; import { getMountOptions } from '@/helpers/unit-test-helper.js'; import { nextTick } from 'vue'; import buttonMain from '@/ux-components/button-main/button-main.vue'; /** @ignore */ 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; } 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 position', async () => { // Act const wrapper = shallowMount( buttonMain, setupMocks({ propsData: { loaderPosition: 'right', loaderEnabled: true } }) ); // Assert wrapper.vm.clicked(); await nextTick(); const loader = wrapper.find('loader-stub'); expect(loader.attributes('class')).toContain('right'); }); });