86 lines
2.1 KiB
JavaScript
86 lines
2.1 KiB
JavaScript
import { shallowMount } from '@vue/test-utils';
|
|
import { GlFormGroup, GlFormSelect } from 'jest/registry/shared/stubs';
|
|
import component from '~/registry/settings/components/expiration_dropdown.vue';
|
|
|
|
describe('ExpirationDropdown', () => {
|
|
let wrapper;
|
|
|
|
const defaultProps = {
|
|
name: 'foo',
|
|
label: 'label-bar',
|
|
formOptions: [
|
|
{ key: 'foo', label: 'bar' },
|
|
{ key: 'baz', label: 'zab' },
|
|
],
|
|
};
|
|
|
|
const findFormSelect = () => wrapper.find(GlFormSelect);
|
|
const findFormGroup = () => wrapper.find(GlFormGroup);
|
|
const findOptions = () => wrapper.findAll('[data-testid="option"]');
|
|
|
|
const mountComponent = (props) => {
|
|
wrapper = shallowMount(component, {
|
|
stubs: {
|
|
GlFormGroup,
|
|
GlFormSelect,
|
|
},
|
|
propsData: {
|
|
...defaultProps,
|
|
...props,
|
|
},
|
|
});
|
|
};
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
wrapper = null;
|
|
});
|
|
|
|
describe('structure', () => {
|
|
it('has a form-select component', () => {
|
|
mountComponent();
|
|
expect(findFormSelect().exists()).toBe(true);
|
|
});
|
|
|
|
it('has the correct options', () => {
|
|
mountComponent();
|
|
|
|
expect(findOptions()).toHaveLength(defaultProps.formOptions.length);
|
|
});
|
|
});
|
|
|
|
describe('model', () => {
|
|
it('assign the right props to the form-select component', () => {
|
|
const value = 'foobar';
|
|
const disabled = true;
|
|
|
|
mountComponent({ value, disabled });
|
|
|
|
expect(findFormSelect().props()).toMatchObject({
|
|
value,
|
|
disabled,
|
|
});
|
|
expect(findFormSelect().attributes('id')).toBe(defaultProps.name);
|
|
});
|
|
|
|
it('assign the right props to the form-group component', () => {
|
|
mountComponent();
|
|
|
|
expect(findFormGroup().attributes()).toMatchObject({
|
|
id: `${defaultProps.name}-form-group`,
|
|
'label-for': defaultProps.name,
|
|
label: defaultProps.label,
|
|
});
|
|
});
|
|
|
|
it('emits input event when form-select emits input', () => {
|
|
const emittedValue = 'barfoo';
|
|
|
|
mountComponent();
|
|
|
|
findFormSelect().vm.$emit('input', emittedValue);
|
|
|
|
expect(wrapper.emitted('input')).toEqual([[emittedValue]]);
|
|
});
|
|
});
|
|
});
|