diff options
author | Winnie Hellmann <winnie@gitlab.com> | 2018-01-23 20:16:26 +0100 |
---|---|---|
committer | Winnie Hellmann <winnie@gitlab.com> | 2018-01-25 12:51:36 +0100 |
commit | d82e709fe505d25ac414407dc17ac7e3d4692d76 (patch) | |
tree | e4f468824c5b92d83aa60fff7f590019f0824429 | |
parent | dcb79741a170eaf673237bb2becbf6fb742a8bfd (diff) | |
download | gitlab-ce-winh-check-axios-restore.tar.gz |
Make sure that axios adapater is restored after mockingwinh-check-axios-restore
-rw-r--r-- | app/assets/javascripts/lib/utils/axios_utils.js | 8 | ||||
-rw-r--r-- | spec/javascripts/test_bundle.js | 10 |
2 files changed, 18 insertions, 0 deletions
diff --git a/app/assets/javascripts/lib/utils/axios_utils.js b/app/assets/javascripts/lib/utils/axios_utils.js index 8aff0556011..585214049c7 100644 --- a/app/assets/javascripts/lib/utils/axios_utils.js +++ b/app/assets/javascripts/lib/utils/axios_utils.js @@ -22,3 +22,11 @@ axios.interceptors.response.use((config) => { }); export default axios; + +/** + * @return The adapter that axios uses for dispatching requests. This may be overwritten in tests. + * + * @see https://github.com/axios/axios/tree/master/lib/adapters + * @see https://github.com/ctimmerm/axios-mock-adapter/blob/v1.12.0/src/index.js#L39 + */ +export const getDefaultAdapter = () => axios.defaults.adapter; diff --git a/spec/javascripts/test_bundle.js b/spec/javascripts/test_bundle.js index 2f6691df9cd..9b2a5379855 100644 --- a/spec/javascripts/test_bundle.js +++ b/spec/javascripts/test_bundle.js @@ -6,6 +6,8 @@ import '~/commons'; import Vue from 'vue'; import VueResource from 'vue-resource'; +import { getDefaultAdapter } from '~/lib/utils/axios_utils'; + const isHeadlessChrome = /\bHeadlessChrome\//.test(navigator.userAgent); Vue.config.devtools = !isHeadlessChrome; Vue.config.productionTip = false; @@ -59,6 +61,8 @@ beforeEach(() => { Vue.http.interceptors = builtinVueHttpInterceptors.slice(); }); +const axiosDefaultAdapter = getDefaultAdapter(); + // render all of our tests const testsContext = require.context('.', true, /_spec$/); testsContext.keys().forEach(function (path) { @@ -94,6 +98,12 @@ describe('test errors', () => { it('has no Vue error', () => { expect(hasVueErrors).toBe(false); }); + + it('restores axios adapter after mocking', () => { + if (getDefaultAdapter() !== axiosDefaultAdapter) { + fail('axios adapter is not restored! Did you forget a restore() on MockAdapter?'); + } + }); }); // if we're generating coverage reports, make sure to include all files so |