From 48aff82709769b098321c738f3444b9bdaa694c6 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 21 Oct 2020 07:08:36 +0000 Subject: Add latest changes from gitlab-org/gitlab@13-5-stable-ee --- .../components/ci_enviroments_dropdown_spec.js | 103 -------------------- .../components/ci_environments_dropdown_spec.js | 107 +++++++++++++++++++++ .../components/ci_variable_modal_spec.js | 24 +---- .../ci_variable_list/store/getters_spec.js | 2 +- .../ci_variable_list/store/mutations_spec.js | 2 +- 5 files changed, 110 insertions(+), 128 deletions(-) delete mode 100644 spec/frontend/ci_variable_list/components/ci_enviroments_dropdown_spec.js create mode 100644 spec/frontend/ci_variable_list/components/ci_environments_dropdown_spec.js (limited to 'spec/frontend/ci_variable_list') diff --git a/spec/frontend/ci_variable_list/components/ci_enviroments_dropdown_spec.js b/spec/frontend/ci_variable_list/components/ci_enviroments_dropdown_spec.js deleted file mode 100644 index 7785d436834..00000000000 --- a/spec/frontend/ci_variable_list/components/ci_enviroments_dropdown_spec.js +++ /dev/null @@ -1,103 +0,0 @@ -import Vuex from 'vuex'; -import { shallowMount, createLocalVue } from '@vue/test-utils'; -import { GlDeprecatedDropdownItem, GlIcon } from '@gitlab/ui'; -import CiEnvironmentsDropdown from '~/ci_variable_list/components/ci_environments_dropdown.vue'; - -const localVue = createLocalVue(); -localVue.use(Vuex); - -describe('Ci environments dropdown', () => { - let wrapper; - let store; - - const createComponent = term => { - store = new Vuex.Store({ - getters: { - joinedEnvironments: () => ['dev', 'prod', 'staging'], - }, - }); - - wrapper = shallowMount(CiEnvironmentsDropdown, { - store, - localVue, - propsData: { - value: term, - }, - }); - }; - - const findAllDropdownItems = () => wrapper.findAll(GlDeprecatedDropdownItem); - const findDropdownItemByIndex = index => wrapper.findAll(GlDeprecatedDropdownItem).at(index); - const findActiveIconByIndex = index => wrapper.findAll(GlIcon).at(index); - - afterEach(() => { - wrapper.destroy(); - wrapper = null; - }); - - describe('No enviroments found', () => { - beforeEach(() => { - createComponent('stable'); - }); - - it('renders create button with search term if enviroments do not contain search term', () => { - expect(findAllDropdownItems()).toHaveLength(2); - expect(findDropdownItemByIndex(1).text()).toBe('Create wildcard: stable'); - }); - - it('renders empty results message', () => { - expect(findDropdownItemByIndex(0).text()).toBe('No matching results'); - }); - }); - - describe('Search term is empty', () => { - beforeEach(() => { - createComponent(''); - }); - - it('renders all enviroments when search term is empty', () => { - expect(findAllDropdownItems()).toHaveLength(3); - expect(findDropdownItemByIndex(0).text()).toBe('dev'); - expect(findDropdownItemByIndex(1).text()).toBe('prod'); - expect(findDropdownItemByIndex(2).text()).toBe('staging'); - }); - }); - - describe('Enviroments found', () => { - beforeEach(() => { - createComponent('prod'); - }); - - it('renders only the enviroment searched for', () => { - expect(findAllDropdownItems()).toHaveLength(1); - expect(findDropdownItemByIndex(0).text()).toBe('prod'); - }); - - it('should not display create button', () => { - const enviroments = findAllDropdownItems().filter(env => env.text().startsWith('Create')); - expect(enviroments).toHaveLength(0); - expect(findAllDropdownItems()).toHaveLength(1); - }); - - it('should not display empty results message', () => { - expect(wrapper.find({ ref: 'noMatchingResults' }).exists()).toBe(false); - }); - - it('should display active checkmark if active', () => { - expect(findActiveIconByIndex(0).classes('invisible')).toBe(false); - }); - - describe('Custom events', () => { - it('should emit selectEnvironment if an environment is clicked', () => { - findDropdownItemByIndex(0).vm.$emit('click'); - expect(wrapper.emitted('selectEnvironment')).toEqual([['prod']]); - }); - - it('should emit createClicked if an environment is clicked', () => { - createComponent('newscope'); - findDropdownItemByIndex(1).vm.$emit('click'); - expect(wrapper.emitted('createClicked')).toEqual([['newscope']]); - }); - }); - }); -}); diff --git a/spec/frontend/ci_variable_list/components/ci_environments_dropdown_spec.js b/spec/frontend/ci_variable_list/components/ci_environments_dropdown_spec.js new file mode 100644 index 00000000000..7bcd558c60f --- /dev/null +++ b/spec/frontend/ci_variable_list/components/ci_environments_dropdown_spec.js @@ -0,0 +1,107 @@ +import Vuex from 'vuex'; +import { mount, createLocalVue } from '@vue/test-utils'; +import { GlDropdownItem, GlIcon } from '@gitlab/ui'; +import CiEnvironmentsDropdown from '~/ci_variable_list/components/ci_environments_dropdown.vue'; + +const localVue = createLocalVue(); +localVue.use(Vuex); + +describe('Ci environments dropdown', () => { + let wrapper; + let store; + + const createComponent = term => { + store = new Vuex.Store({ + getters: { + joinedEnvironments: () => ['dev', 'prod', 'staging'], + }, + }); + + wrapper = mount(CiEnvironmentsDropdown, { + store, + localVue, + propsData: { + value: term, + }, + }); + }; + + const findAllDropdownItems = () => wrapper.findAll(GlDropdownItem); + const findDropdownItemByIndex = index => wrapper.findAll(GlDropdownItem).at(index); + const findActiveIconByIndex = index => findDropdownItemByIndex(index).find(GlIcon); + + afterEach(() => { + wrapper.destroy(); + wrapper = null; + }); + + describe('No environments found', () => { + beforeEach(() => { + createComponent('stable'); + }); + + it('renders create button with search term if environments do not contain search term', () => { + expect(findAllDropdownItems()).toHaveLength(2); + expect(findDropdownItemByIndex(1).text()).toBe('Create wildcard: stable'); + }); + + it('renders empty results message', () => { + expect(findDropdownItemByIndex(0).text()).toBe('No matching results'); + }); + }); + + describe('Search term is empty', () => { + beforeEach(() => { + createComponent(''); + }); + + it('renders all environments when search term is empty', () => { + expect(findAllDropdownItems()).toHaveLength(3); + expect(findDropdownItemByIndex(0).text()).toBe('dev'); + expect(findDropdownItemByIndex(1).text()).toBe('prod'); + expect(findDropdownItemByIndex(2).text()).toBe('staging'); + }); + + it('should not display active checkmark on the inactive stage', () => { + expect(findActiveIconByIndex(0).classes('gl-visibility-hidden')).toBe(true); + }); + }); + + describe('Environments found', () => { + beforeEach(() => { + createComponent('prod'); + }); + + it('renders only the environment searched for', () => { + expect(findAllDropdownItems()).toHaveLength(1); + expect(findDropdownItemByIndex(0).text()).toBe('prod'); + }); + + it('should not display create button', () => { + const environments = findAllDropdownItems().filter(env => env.text().startsWith('Create')); + expect(environments).toHaveLength(0); + expect(findAllDropdownItems()).toHaveLength(1); + }); + + it('should not display empty results message', () => { + expect(wrapper.find({ ref: 'noMatchingResults' }).exists()).toBe(false); + }); + + it('should display active checkmark if active', () => { + expect(findActiveIconByIndex(0).classes('gl-visibility-hidden')).toBe(false); + }); + + describe('Custom events', () => { + it('should emit selectEnvironment if an environment is clicked', () => { + findDropdownItemByIndex(0).vm.$emit('click'); + expect(wrapper.emitted('selectEnvironment')).toEqual([['prod']]); + }); + + it('should emit createClicked if an environment is clicked', () => { + createComponent('newscope'); + findDropdownItemByIndex(1).vm.$emit('click'); + expect(wrapper.emitted('createClicked')).toEqual([['newscope']]); + }); + }); + }); +}); diff --git a/spec/frontend/ci_variable_list/components/ci_variable_modal_spec.js b/spec/frontend/ci_variable_list/components/ci_variable_modal_spec.js index ab32fb12058..5c2d096418d 100644 --- a/spec/frontend/ci_variable_list/components/ci_variable_modal_spec.js +++ b/spec/frontend/ci_variable_list/components/ci_variable_modal_spec.js @@ -1,6 +1,6 @@ import Vuex from 'vuex'; import { createLocalVue, shallowMount, mount } from '@vue/test-utils'; -import { GlButton, GlFormCombobox } from '@gitlab/ui'; +import { GlButton } from '@gitlab/ui'; import { AWS_ACCESS_KEY_ID } from '~/ci_variable_list/constants'; import CiVariableModal from '~/ci_variable_list/components/ci_variable_modal.vue'; import createStore from '~/ci_variable_list/store'; @@ -18,7 +18,6 @@ describe('Ci variable modal', () => { store = createStore(); wrapper = method(CiVariableModal, { attachToDocument: true, - provide: { glFeatures: { ciKeyAutocomplete: true } }, stubs: { GlModal: ModalStub, }, @@ -42,27 +41,6 @@ describe('Ci variable modal', () => { wrapper.destroy(); }); - describe('Feature flag', () => { - describe('when off', () => { - beforeEach(() => { - createComponent(shallowMount, { provide: { glFeatures: { ciKeyAutocomplete: false } } }); - }); - - it('does not render the autocomplete dropdown', () => { - expect(wrapper.find(GlFormCombobox).exists()).toBe(false); - }); - }); - - describe('when on', () => { - beforeEach(() => { - createComponent(shallowMount); - }); - it('renders the autocomplete dropdown', () => { - expect(wrapper.find(GlFormCombobox).exists()).toBe(true); - }); - }); - }); - describe('Basic interactions', () => { beforeEach(() => { createComponent(shallowMount); diff --git a/spec/frontend/ci_variable_list/store/getters_spec.js b/spec/frontend/ci_variable_list/store/getters_spec.js index 7ad96545652..92f22b18763 100644 --- a/spec/frontend/ci_variable_list/store/getters_spec.js +++ b/spec/frontend/ci_variable_list/store/getters_spec.js @@ -3,7 +3,7 @@ import mockData from '../services/mock_data'; describe('Ci variable getters', () => { describe('joinedEnvironments', () => { - it('should join fetched enviroments with variable environment scopes', () => { + it('should join fetched environments with variable environment scopes', () => { const state = { environments: ['All (default)', 'staging', 'deployment', 'prod'], variables: mockData.mockVariableScopes, diff --git a/spec/frontend/ci_variable_list/store/mutations_spec.js b/spec/frontend/ci_variable_list/store/mutations_spec.js index 663b3486a17..a333fb7d8f9 100644 --- a/spec/frontend/ci_variable_list/store/mutations_spec.js +++ b/spec/frontend/ci_variable_list/store/mutations_spec.js @@ -73,7 +73,7 @@ describe('CI variable list mutations', () => { }); describe('ADD_WILD_CARD_SCOPE', () => { - it('should add wild card scope to enviroments array and sort', () => { + it('should add wild card scope to environments array and sort', () => { stateCopy.environments = ['dev', 'staging']; mutations[types.ADD_WILD_CARD_SCOPE](stateCopy, 'production'); -- cgit v1.2.3