summaryrefslogtreecommitdiff
path: root/spec/frontend/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
diff options
context:
space:
mode:
Diffstat (limited to 'spec/frontend/pages/admin/jobs/index/components/stop_jobs_modal_spec.js')
-rw-r--r--spec/frontend/pages/admin/jobs/index/components/stop_jobs_modal_spec.js38
1 files changed, 26 insertions, 12 deletions
diff --git a/spec/frontend/pages/admin/jobs/index/components/stop_jobs_modal_spec.js b/spec/frontend/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
index ebf21c01324..17669331370 100644
--- a/spec/frontend/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
+++ b/spec/frontend/pages/admin/jobs/index/components/stop_jobs_modal_spec.js
@@ -1,9 +1,10 @@
-import Vue from 'vue';
+import Vue, { nextTick } from 'vue';
+import { mount } from '@vue/test-utils';
+import { GlModal } from '@gitlab/ui';
import { TEST_HOST } from 'helpers/test_constants';
-import mountComponent from 'helpers/vue_mount_component_helper';
import axios from '~/lib/utils/axios_utils';
import { redirectTo } from '~/lib/utils/url_utility';
-import stopJobsModal from '~/pages/admin/jobs/index/components/stop_jobs_modal.vue';
+import StopJobsModal from '~/pages/admin/jobs/index/components/stop_jobs_modal.vue';
jest.mock('~/lib/utils/url_utility', () => ({
...jest.requireActual('~/lib/utils/url_utility'),
@@ -14,20 +15,23 @@ describe('stop_jobs_modal.vue', () => {
const props = {
url: `${TEST_HOST}/stop_jobs_modal.vue/stopAll`,
};
- let vm;
+ let wrapper;
- afterEach(() => {
- vm.$destroy();
+ beforeEach(() => {
+ wrapper = mount(StopJobsModal, { propsData: props });
});
- beforeEach(() => {
- const Component = Vue.extend(stopJobsModal);
- vm = mountComponent(Component, props);
+ afterEach(() => {
+ wrapper.destroy();
});
- describe('onSubmit', () => {
+ describe('on submit', () => {
it('stops jobs and redirects to overview page', async () => {
const responseURL = `${TEST_HOST}/stop_jobs_modal.vue/jobs`;
+ // TODO: We can't use axios-mock-adapter because our current version
+ // does not support responseURL
+ //
+ // see https://gitlab.com/gitlab-org/gitlab/-/issues/375308 for details
jest.spyOn(axios, 'post').mockImplementation((url) => {
expect(url).toBe(props.url);
return Promise.resolve({
@@ -37,18 +41,28 @@ describe('stop_jobs_modal.vue', () => {
});
});
- await vm.onSubmit();
+ wrapper.findComponent(GlModal).vm.$emit('primary');
+ await nextTick();
+
expect(redirectTo).toHaveBeenCalledWith(responseURL);
});
it('displays error if stopping jobs failed', async () => {
+ Vue.config.errorHandler = () => {}; // silencing thrown error
+
const dummyError = new Error('stopping jobs failed');
+ // TODO: We can't use axios-mock-adapter because our current version
+ // does not support responseURL
+ //
+ // see https://gitlab.com/gitlab-org/gitlab/-/issues/375308 for details
jest.spyOn(axios, 'post').mockImplementation((url) => {
expect(url).toBe(props.url);
return Promise.reject(dummyError);
});
- await expect(vm.onSubmit()).rejects.toEqual(dummyError);
+ wrapper.findComponent(GlModal).vm.$emit('primary');
+ await nextTick();
+
expect(redirectTo).not.toHaveBeenCalled();
});
});