summaryrefslogtreecommitdiff
path: root/spec/frontend/deploy_keys
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 15:44:42 +0000
commit4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch)
tree5423a1c7516cffe36384133ade12572cf709398d /spec/frontend/deploy_keys
parente570267f2f6b326480d284e0164a6464ba4081bc (diff)
downloadgitlab-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.js29
-rw-r--r--spec/frontend/deploy_keys/components/app_spec.js20
-rw-r--r--spec/frontend/deploy_keys/components/confirm_modal_spec.js28
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?');
+ });
+});