debian-mirror-gitlab/spec/frontend/registry/settings/components/expiration_dropdown_spec.js

84 lines
2.1 KiB
JavaScript
Raw Normal View History

2021-02-22 17:27:13 +05:30
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]]);
});
});
});