49 lines
1.1 KiB
JavaScript
49 lines
1.1 KiB
JavaScript
|
import { shallowMount, mount } from '@vue/test-utils';
|
||
|
import { GlButton } from '@gitlab/ui';
|
||
|
import TodoButton from '~/vue_shared/components/todo_button.vue';
|
||
|
|
||
|
describe('Todo Button', () => {
|
||
|
let wrapper;
|
||
|
|
||
|
const createComponent = (props = {}, mountFn = shallowMount) => {
|
||
|
wrapper = mountFn(TodoButton, {
|
||
|
propsData: {
|
||
|
...props,
|
||
|
},
|
||
|
});
|
||
|
};
|
||
|
|
||
|
afterEach(() => {
|
||
|
wrapper.destroy();
|
||
|
});
|
||
|
|
||
|
it('renders GlButton', () => {
|
||
|
createComponent();
|
||
|
|
||
|
expect(wrapper.find(GlButton).exists()).toBe(true);
|
||
|
});
|
||
|
|
||
|
it('emits click event when clicked', () => {
|
||
|
createComponent({}, mount);
|
||
|
wrapper.find(GlButton).trigger('click');
|
||
|
|
||
|
expect(wrapper.emitted().click).toBeTruthy();
|
||
|
});
|
||
|
|
||
|
it.each`
|
||
|
label | isTodo
|
||
|
${'Mark as done'} | ${true}
|
||
|
${'Add a To-Do'} | ${false}
|
||
|
`('sets correct label when isTodo is $isTodo', ({ label, isTodo }) => {
|
||
|
createComponent({ isTodo });
|
||
|
|
||
|
expect(wrapper.find(GlButton).text()).toBe(label);
|
||
|
});
|
||
|
|
||
|
it('binds additional props to GlButton', () => {
|
||
|
createComponent({ loading: true });
|
||
|
|
||
|
expect(wrapper.find(GlButton).props('loading')).toBe(true);
|
||
|
});
|
||
|
});
|