summaryrefslogtreecommitdiff
path: root/spec/frontend/create_cluster/components/cluster_form_dropdown_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/create_cluster/components/cluster_form_dropdown_spec.js')
-rw-r--r--spec/frontend/create_cluster/components/cluster_form_dropdown_spec.js134
1 files changed, 59 insertions, 75 deletions
diff --git a/spec/frontend/create_cluster/components/cluster_form_dropdown_spec.js b/spec/frontend/create_cluster/components/cluster_form_dropdown_spec.js
index 4e92fa1df16..2f835867f5f 100644
--- a/spec/frontend/create_cluster/components/cluster_form_dropdown_spec.js
+++ b/spec/frontend/create_cluster/components/cluster_form_dropdown_spec.js
@@ -2,6 +2,7 @@ import { GlIcon } from '@gitlab/ui';
import { shallowMount } from '@vue/test-utils';
import $ from 'jquery';
+import { nextTick } from 'vue';
import ClusterFormDropdown from '~/create_cluster/components/cluster_form_dropdown.vue';
import DropdownButton from '~/vue_shared/components/dropdown/dropdown_button.vue';
import DropdownSearchInput from '~/vue_shared/components/dropdown/dropdown_search_input.vue';
@@ -18,35 +19,31 @@ describe('ClusterFormDropdown', () => {
afterEach(() => wrapper.destroy());
describe('when initial value is provided', () => {
- it('sets selectedItem to initial value', () => {
+ it('sets selectedItem to initial value', async () => {
wrapper.setProps({ items, value: secondItem.value });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(secondItem.name);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(secondItem.name);
});
});
describe('when no item is selected', () => {
- it('displays placeholder text', () => {
+ it('displays placeholder text', async () => {
const placeholder = 'placeholder';
wrapper.setProps({ placeholder });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(placeholder);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(placeholder);
});
});
describe('when an item is selected', () => {
- beforeEach(() => {
+ beforeEach(async () => {
wrapper.setProps({ items });
-
- return wrapper.vm.$nextTick().then(() => {
- wrapper.findAll('.js-dropdown-item').at(1).trigger('click');
- return wrapper.vm.$nextTick();
- });
+ await nextTick();
+ wrapper.findAll('.js-dropdown-item').at(1).trigger('click');
+ await nextTick();
});
it('emits input event with selected item', () => {
@@ -57,18 +54,16 @@ describe('ClusterFormDropdown', () => {
describe('when multiple items are selected', () => {
const value = ['1'];
- beforeEach(() => {
+ beforeEach(async () => {
wrapper.setProps({ items, multiple: true, value });
- return wrapper.vm
- .$nextTick()
- .then(() => {
- wrapper.findAll('.js-dropdown-item').at(0).trigger('click');
- return wrapper.vm.$nextTick();
- })
- .then(() => {
- wrapper.findAll('.js-dropdown-item').at(1).trigger('click');
- return wrapper.vm.$nextTick();
- });
+
+ await nextTick();
+ wrapper.findAll('.js-dropdown-item').at(0).trigger('click');
+
+ await nextTick();
+ wrapper.findAll('.js-dropdown-item').at(1).trigger('click');
+
+ await nextTick();
});
it('emits input event with an array of selected items', () => {
@@ -77,9 +72,9 @@ describe('ClusterFormDropdown', () => {
});
describe('when multiple items can be selected', () => {
- beforeEach(() => {
+ beforeEach(async () => {
wrapper.setProps({ items, multiple: true, value: firstItem.value });
- return wrapper.vm.$nextTick();
+ await nextTick();
});
it('displays a checked GlIcon next to the item', () => {
@@ -89,19 +84,18 @@ describe('ClusterFormDropdown', () => {
});
describe('when multiple values can be selected and initial value is null', () => {
- it('emits input event with an array of a single selected item', () => {
+ it('emits input event with an array of a single selected item', async () => {
wrapper.setProps({ items, multiple: true, value: null });
- return wrapper.vm.$nextTick().then(() => {
- wrapper.findAll('.js-dropdown-item').at(0).trigger('click');
+ await nextTick();
+ wrapper.findAll('.js-dropdown-item').at(0).trigger('click');
- expect(wrapper.emitted('input')[0]).toEqual([[firstItem.value]]);
- });
+ expect(wrapper.emitted('input')[0]).toEqual([[firstItem.value]]);
});
});
describe('when an item is selected and has a custom label property', () => {
- it('displays selected item custom label', () => {
+ it('displays selected item custom label', async () => {
const labelProperty = 'customLabel';
const label = 'Name';
const currentValue = '1';
@@ -109,9 +103,8 @@ describe('ClusterFormDropdown', () => {
wrapper.setProps({ labelProperty, items: customLabelItems, value: currentValue });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(label);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(label);
});
});
@@ -123,86 +116,79 @@ describe('ClusterFormDropdown', () => {
});
describe('when loading and loadingText is provided', () => {
- it('uses loading text as toggle button text', () => {
+ it('uses loading text as toggle button text', async () => {
const loadingText = 'loading text';
wrapper.setProps({ loading: true, loadingText });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(loadingText);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownButton).props('toggleText')).toEqual(loadingText);
});
});
describe('when disabled', () => {
- it('dropdown button isDisabled', () => {
+ it('dropdown button isDisabled', async () => {
wrapper.setProps({ disabled: true });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownButton).props('isDisabled')).toBe(true);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownButton).props('isDisabled')).toBe(true);
});
});
describe('when disabled and disabledText is provided', () => {
- it('uses disabled text as toggle button text', () => {
+ it('uses disabled text as toggle button text', async () => {
const disabledText = 'disabled text';
wrapper.setProps({ disabled: true, disabledText });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownButton).props('toggleText')).toBe(disabledText);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownButton).props('toggleText')).toBe(disabledText);
});
});
describe('when has errors', () => {
- it('sets border-danger class selector to dropdown toggle', () => {
+ it('sets border-danger class selector to dropdown toggle', async () => {
wrapper.setProps({ hasErrors: true });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownButton).classes('border-danger')).toBe(true);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownButton).classes('border-danger')).toBe(true);
});
});
describe('when has errors and an error message', () => {
- it('displays error message', () => {
+ it('displays error message', async () => {
const errorMessage = 'error message';
wrapper.setProps({ hasErrors: true, errorMessage });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find('.js-eks-dropdown-error-message').text()).toEqual(errorMessage);
- });
+ await nextTick();
+ expect(wrapper.find('.js-eks-dropdown-error-message').text()).toEqual(errorMessage);
});
});
describe('when no results are available', () => {
- it('displays empty text', () => {
+ it('displays empty text', async () => {
const emptyText = 'error message';
wrapper.setProps({ items: [], emptyText });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find('.js-empty-text').text()).toEqual(emptyText);
- });
+ await nextTick();
+ expect(wrapper.find('.js-empty-text').text()).toEqual(emptyText);
});
});
- it('displays search field placeholder', () => {
+ it('displays search field placeholder', async () => {
const searchFieldPlaceholder = 'Placeholder';
wrapper.setProps({ searchFieldPlaceholder });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.find(DropdownSearchInput).props('placeholderText')).toEqual(
- searchFieldPlaceholder,
- );
- });
+ await nextTick();
+ expect(wrapper.find(DropdownSearchInput).props('placeholderText')).toEqual(
+ searchFieldPlaceholder,
+ );
});
- it('it filters results by search query', () => {
+ it('it filters results by search query', async () => {
const searchQuery = secondItem.name;
wrapper.setProps({ items });
@@ -210,21 +196,19 @@ describe('ClusterFormDropdown', () => {
// eslint-disable-next-line no-restricted-syntax
wrapper.setData({ searchQuery });
- return wrapper.vm.$nextTick().then(() => {
- expect(wrapper.findAll('.js-dropdown-item').length).toEqual(1);
- expect(wrapper.find('.js-dropdown-item').text()).toEqual(secondItem.name);
- });
+ await nextTick();
+ expect(wrapper.findAll('.js-dropdown-item').length).toEqual(1);
+ expect(wrapper.find('.js-dropdown-item').text()).toEqual(secondItem.name);
});
- it('focuses dropdown search input when dropdown is displayed', () => {
+ it('focuses dropdown search input when dropdown is displayed', async () => {
const dropdownEl = wrapper.find('.dropdown').element;
expect(wrapper.find(DropdownSearchInput).props('focused')).toBe(false);
$(dropdownEl).trigger('shown.bs.dropdown');
- return wrapper.vm.$nextTick(() => {
- expect(wrapper.find(DropdownSearchInput).props('focused')).toBe(true);
- });
+ await nextTick();
+ expect(wrapper.find(DropdownSearchInput).props('focused')).toBe(true);
});
});