Skip to content

Commit

Permalink
Fixing bug with custom intances and global defaults
Browse files Browse the repository at this point in the history
  • Loading branch information
nickuraltsev committed Nov 27, 2016
1 parent 5faebab commit 6d0e193
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 6 deletions.
7 changes: 4 additions & 3 deletions lib/axios.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
var utils = require('./utils');
var bind = require('./helpers/bind');
var Axios = require('./core/Axios');
var defaults = require('./defaults');

/**
* Create an instance of Axios
Expand All @@ -24,14 +25,14 @@ function createInstance(defaultConfig) {
}

// Create the default instance to be exported
var axios = createInstance();
var axios = createInstance(defaults);

// Expose Axios class to allow class inheritance
axios.Axios = Axios;

// Factory for creating new instances
axios.create = function create(defaultConfig) {
return createInstance(defaultConfig);
axios.create = function create(instanceConfig) {
return createInstance(utils.merge(defaults, instanceConfig));
};

// Expose Cancel & CancelToken
Expand Down
6 changes: 3 additions & 3 deletions lib/core/Axios.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ var combineURLs = require('./../helpers/combineURLs');
/**
* Create a new instance of Axios
*
* @param {Object} defaultConfig The default config for the instance
* @param {Object} instanceConfig The default config for the instance
*/
function Axios(defaultConfig) {
this.defaults = utils.merge(defaults, defaultConfig);
function Axios(instanceConfig) {
this.defaults = instanceConfig;
this.interceptors = {
request: new InterceptorManager(),
response: new InterceptorManager()
Expand Down
23 changes: 23 additions & 0 deletions test/specs/defaults.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,4 +136,27 @@ describe('defaults', function () {
});
});

it('should be used by custom instance if set before instance created', function (done) {
axios.defaults.baseURL = 'http://example.org/';
var instance = axios.create();

instance.get('/foo');

getAjaxRequest().then(function (request) {
expect(request.url).toBe('http://example.org/foo');
done();
});
});

it('should be used by custom instance if set after instance created', function (done) {
var instance = axios.create();
axios.defaults.baseURL = 'http://example.org/';

instance.get('/foo');

getAjaxRequest().then(function (request) {
expect(request.url).toBe('http://example.org/foo');
done();
});
});
});

0 comments on commit 6d0e193

Please sign in to comment.