DigitalConsumer.ISS/src/ux-components/button-main/button-main.spec.js
2023-08-02 10:45:39 -04:00

96 lines
2.4 KiB
JavaScript

import { shallowMount } from '@vue/test-utils';
import { getMountOptions } from '@/helpers/unit-test-helper.js';
import { nextTick } from 'vue';
import buttonMain from './button-main';
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');
});
});
/**
*
* @param mountOptionsMockData
*/
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;
}