73 lines
2 KiB
JavaScript
73 lines
2 KiB
JavaScript
import { GlDropdown, GlDropdownItem } from '@gitlab/ui';
|
|
import { shallowMount } from '@vue/test-utils';
|
|
import Component from '~/groups/components/visibility_level_dropdown.vue';
|
|
|
|
describe('Visibility Level Dropdown', () => {
|
|
let wrapper;
|
|
|
|
const options = [
|
|
{ level: 0, label: 'Private', description: 'Private description' },
|
|
{ level: 20, label: 'Public', description: 'Public description' },
|
|
];
|
|
const defaultLevel = 0;
|
|
|
|
const createComponent = propsData => {
|
|
wrapper = shallowMount(Component, {
|
|
propsData,
|
|
});
|
|
};
|
|
|
|
beforeEach(() => {
|
|
createComponent({
|
|
visibilityLevelOptions: options,
|
|
defaultLevel,
|
|
});
|
|
});
|
|
|
|
afterEach(() => {
|
|
wrapper.destroy();
|
|
wrapper = null;
|
|
});
|
|
|
|
const hiddenInputValue = () =>
|
|
wrapper.find("input[name='group[visibility_level]']").attributes('value');
|
|
const dropdownText = () => wrapper.find(GlDropdown).props('text');
|
|
const findDropdownItems = () =>
|
|
wrapper.findAll(GlDropdownItem).wrappers.map(option => ({
|
|
text: option.text(),
|
|
secondaryText: option.props('secondaryText'),
|
|
}));
|
|
|
|
describe('Default values', () => {
|
|
it('sets the value of the hidden input to the default value', () => {
|
|
expect(hiddenInputValue()).toBe(options[0].level.toString());
|
|
});
|
|
|
|
it('sets the text of the dropdown to the default value', () => {
|
|
expect(dropdownText()).toBe(options[0].label);
|
|
});
|
|
|
|
it('shows all dropdown options', () => {
|
|
expect(findDropdownItems()).toEqual(
|
|
options.map(({ label, description }) => ({ text: label, secondaryText: description })),
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('Selecting an option', () => {
|
|
beforeEach(() => {
|
|
wrapper
|
|
.findAll(GlDropdownItem)
|
|
.at(1)
|
|
.vm.$emit('click');
|
|
});
|
|
|
|
it('sets the value of the hidden input to the selected value', () => {
|
|
expect(hiddenInputValue()).toBe(options[1].level.toString());
|
|
});
|
|
|
|
it('sets the text of the dropdown to the selected value', () => {
|
|
expect(dropdownText()).toBe(options[1].label);
|
|
});
|
|
});
|
|
});
|