add spyOnDependency method
This commit is contained in:
parent
8166a11c02
commit
8a713b37cb
4 changed files with 18 additions and 7 deletions
|
@ -18,6 +18,7 @@
|
|||
"sandbox": false,
|
||||
"setFixtures": false,
|
||||
"setStyleFixtures": false,
|
||||
"spyOnDependency": false,
|
||||
"spyOnEvent": false,
|
||||
"ClassSpecHelper": false
|
||||
},
|
||||
|
|
|
@ -2,7 +2,6 @@ import Vue from 'vue';
|
|||
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
import stopJobsModal from '~/pages/admin/jobs/index/components/stop_jobs_modal.vue';
|
||||
import * as urlUtility from '~/lib/utils/url_utility';
|
||||
|
||||
import mountComponent from 'spec/helpers/vue_mount_component_helper';
|
||||
|
||||
|
@ -24,7 +23,7 @@ describe('stop_jobs_modal.vue', () => {
|
|||
describe('onSubmit', () => {
|
||||
it('stops jobs and redirects to overview page', (done) => {
|
||||
const responseURL = `${gl.TEST_HOST}/stop_jobs_modal.vue/jobs`;
|
||||
const redirectSpy = spyOn(urlUtility, 'redirectTo');
|
||||
const redirectSpy = spyOnDependency(stopJobsModal, 'redirectTo');
|
||||
spyOn(axios, 'post').and.callFake((url) => {
|
||||
expect(url).toBe(props.url);
|
||||
return Promise.resolve({
|
||||
|
@ -44,7 +43,7 @@ describe('stop_jobs_modal.vue', () => {
|
|||
|
||||
it('displays error if stopping jobs failed', (done) => {
|
||||
const dummyError = new Error('stopping jobs failed');
|
||||
const redirectSpy = spyOn(urlUtility, 'redirectTo');
|
||||
const redirectSpy = spyOnDependency(stopJobsModal, 'redirectTo');
|
||||
spyOn(axios, 'post').and.callFake((url) => {
|
||||
expect(url).toBe(props.url);
|
||||
return Promise.reject(dummyError);
|
||||
|
|
|
@ -3,7 +3,6 @@ import Vue from 'vue';
|
|||
import axios from '~/lib/utils/axios_utils';
|
||||
import deleteMilestoneModal from '~/pages/milestones/shared/components/delete_milestone_modal.vue';
|
||||
import eventHub from '~/pages/milestones/shared/event_hub';
|
||||
import * as urlUtility from '~/lib/utils/url_utility';
|
||||
|
||||
import mountComponent from 'spec/helpers/vue_mount_component_helper';
|
||||
|
||||
|
@ -40,7 +39,7 @@ describe('delete_milestone_modal.vue', () => {
|
|||
},
|
||||
});
|
||||
});
|
||||
const redirectSpy = spyOn(urlUtility, 'redirectTo');
|
||||
const redirectSpy = spyOnDependency(deleteMilestoneModal, 'redirectTo');
|
||||
|
||||
vm.onSubmit()
|
||||
.then(() => {
|
||||
|
@ -60,7 +59,7 @@ describe('delete_milestone_modal.vue', () => {
|
|||
eventHub.$emit.calls.reset();
|
||||
return Promise.reject(dummyError);
|
||||
});
|
||||
const redirectSpy = spyOn(urlUtility, 'redirectTo');
|
||||
const redirectSpy = spyOnDependency(deleteMilestoneModal, 'redirectTo');
|
||||
|
||||
vm.onSubmit()
|
||||
.catch((error) => {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/* eslint-disable jasmine/no-global-setup */
|
||||
/* eslint-disable jasmine/no-global-setup, jasmine/no-unsafe-spy, no-underscore-dangle */
|
||||
|
||||
import $ from 'jquery';
|
||||
import 'vendor/jasmine-jquery';
|
||||
import '~/commons';
|
||||
|
@ -55,6 +56,17 @@ window.addEventListener('unhandledrejection', event => {
|
|||
console.error(event.reason.stack || event.reason);
|
||||
});
|
||||
|
||||
// Add global function to spy on a module's dependencies via rewire
|
||||
window.spyOnDependency = (module, name) => {
|
||||
const dependency = module.__GetDependency__(name);
|
||||
const spy = jasmine.createSpy(name, dependency);
|
||||
module.__Rewire__(name, spy);
|
||||
return spy;
|
||||
};
|
||||
|
||||
// Reset any rewired modules after each test (see babel-plugin-rewire)
|
||||
afterEach(__rewire_reset_all__); // eslint-disable-line
|
||||
|
||||
// HACK: Chrome 59 disconnects if there are too many synchronous tests in a row
|
||||
// because it appears to lock up the thread that communicates to Karma's socket
|
||||
// This async beforeEach gets called on every spec and releases the JS thread long
|
||||
|
|
Loading…
Reference in a new issue