diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-19 15:44:42 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-05-19 15:44:42 +0000 |
commit | 4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch) | |
tree | 5423a1c7516cffe36384133ade12572cf709398d /spec/frontend/deploy_keys | |
parent | e570267f2f6b326480d284e0164a6464ba4081bc (diff) | |
download | gitlab-ce-4555e1b21c365ed8303ffb7a3325d773c9b8bf31.tar.gz |
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'spec/frontend/deploy_keys')
-rw-r--r-- | spec/frontend/deploy_keys/components/action_btn_spec.js | 29 | ||||
-rw-r--r-- | spec/frontend/deploy_keys/components/app_spec.js | 20 | ||||
-rw-r--r-- | spec/frontend/deploy_keys/components/confirm_modal_spec.js | 28 |
3 files changed, 60 insertions, 17 deletions
diff --git a/spec/frontend/deploy_keys/components/action_btn_spec.js b/spec/frontend/deploy_keys/components/action_btn_spec.js index 21281ff15b1..307a0b6d8b0 100644 --- a/spec/frontend/deploy_keys/components/action_btn_spec.js +++ b/spec/frontend/deploy_keys/components/action_btn_spec.js @@ -1,4 +1,4 @@ -import { GlLoadingIcon } from '@gitlab/ui'; +import { GlButton } from '@gitlab/ui'; import { shallowMount } from '@vue/test-utils'; import actionBtn from '~/deploy_keys/components/action_btn.vue'; import eventHub from '~/deploy_keys/eventhub'; @@ -8,13 +8,16 @@ describe('Deploy keys action btn', () => { const deployKey = data.enabled_keys[0]; let wrapper; - const findLoadingIcon = () => wrapper.find(GlLoadingIcon); + const findButton = () => wrapper.findComponent(GlButton); beforeEach(() => { wrapper = shallowMount(actionBtn, { propsData: { deployKey, type: 'enable', + category: 'primary', + variant: 'confirm', + icon: 'edit', }, slots: { default: 'Enable', @@ -26,10 +29,18 @@ describe('Deploy keys action btn', () => { expect(wrapper.text()).toBe('Enable'); }); + it('passes the button props on', () => { + expect(findButton().props()).toMatchObject({ + category: 'primary', + variant: 'confirm', + icon: 'edit', + }); + }); + it('sends eventHub event with btn type', () => { jest.spyOn(eventHub, '$emit').mockImplementation(() => {}); - wrapper.trigger('click'); + findButton().vm.$emit('click'); return wrapper.vm.$nextTick().then(() => { expect(eventHub.$emit).toHaveBeenCalledWith('enable.key', deployKey, expect.anything()); @@ -37,18 +48,10 @@ describe('Deploy keys action btn', () => { }); it('shows loading spinner after click', () => { - wrapper.trigger('click'); - - return wrapper.vm.$nextTick().then(() => { - expect(findLoadingIcon().exists()).toBe(true); - }); - }); - - it('disables button after click', () => { - wrapper.trigger('click'); + findButton().vm.$emit('click'); return wrapper.vm.$nextTick().then(() => { - expect(wrapper.attributes('disabled')).toBe('disabled'); + expect(findButton().props('loading')).toBe(true); }); }); }); diff --git a/spec/frontend/deploy_keys/components/app_spec.js b/spec/frontend/deploy_keys/components/app_spec.js index b48e0424580..a72b2b00776 100644 --- a/spec/frontend/deploy_keys/components/app_spec.js +++ b/spec/frontend/deploy_keys/components/app_spec.js @@ -3,6 +3,7 @@ import MockAdapter from 'axios-mock-adapter'; import waitForPromises from 'helpers/wait_for_promises'; import { TEST_HOST } from 'spec/test_constants'; import deployKeysApp from '~/deploy_keys/components/app.vue'; +import ConfirmModal from '~/deploy_keys/components/confirm_modal.vue'; import eventHub from '~/deploy_keys/eventhub'; import axios from '~/lib/utils/axios_utils'; @@ -36,6 +37,7 @@ describe('Deploy keys app component', () => { const findLoadingIcon = () => wrapper.find('.gl-spinner'); const findKeyPanels = () => wrapper.findAll('.deploy-keys .gl-tabs-nav li'); + const findModal = () => wrapper.findComponent(ConfirmModal); it('renders loading icon while waiting for request', () => { mock.onGet(TEST_ENDPOINT).reply(() => new Promise()); @@ -94,11 +96,16 @@ describe('Deploy keys app component', () => { const key = data.public_keys[0]; return mountComponent() .then(() => { - jest.spyOn(window, 'confirm').mockReturnValue(true); jest.spyOn(wrapper.vm.service, 'getKeys').mockImplementation(() => {}); jest.spyOn(wrapper.vm.service, 'disableKey').mockImplementation(() => Promise.resolve()); - eventHub.$emit('disable.key', key); + eventHub.$emit('disable.key', key, () => {}); + + return wrapper.vm.$nextTick(); + }) + .then(() => { + expect(findModal().props('visible')).toBe(true); + findModal().vm.$emit('remove'); return wrapper.vm.$nextTick(); }) @@ -112,11 +119,16 @@ describe('Deploy keys app component', () => { const key = data.public_keys[0]; return mountComponent() .then(() => { - jest.spyOn(window, 'confirm').mockReturnValue(true); jest.spyOn(wrapper.vm.service, 'getKeys').mockImplementation(() => {}); jest.spyOn(wrapper.vm.service, 'disableKey').mockImplementation(() => Promise.resolve()); - eventHub.$emit('remove.key', key); + eventHub.$emit('remove.key', key, () => {}); + + return wrapper.vm.$nextTick(); + }) + .then(() => { + expect(findModal().props('visible')).toBe(true); + findModal().vm.$emit('remove'); return wrapper.vm.$nextTick(); }) diff --git a/spec/frontend/deploy_keys/components/confirm_modal_spec.js b/spec/frontend/deploy_keys/components/confirm_modal_spec.js new file mode 100644 index 00000000000..42cc2b377a7 --- /dev/null +++ b/spec/frontend/deploy_keys/components/confirm_modal_spec.js @@ -0,0 +1,28 @@ +import { GlModal } from '@gitlab/ui'; +import { mount } from '@vue/test-utils'; +import { extendedWrapper } from 'helpers/vue_test_utils_helper'; +import ConfirmModal from '~/deploy_keys/components/confirm_modal.vue'; + +describe('~/deploy_keys/components/confirm_modal.vue', () => { + let wrapper; + let modal; + + beforeEach(() => { + wrapper = mount(ConfirmModal, { propsData: { modalId: 'test', visible: true } }); + modal = extendedWrapper(wrapper.findComponent(GlModal)); + }); + + it('emits a remove event if the primary button is clicked', () => { + modal.findByText('Remove deploy key').trigger('click'); + expect(wrapper.emitted('remove')).toEqual([[]]); + }); + + it('emits a cancel event if the secondary button is clicked', () => { + modal.findByText('Cancel').trigger('click'); + expect(wrapper.emitted('cancel')).toEqual([[]]); + }); + + it('displays the warning about removing the deploy key', () => { + expect(modal.text()).toContain('Are you sure you want to remove this deploy key?'); + }); +}); |