mirror of
https://github.com/tenrok/axios.git
synced 2026-06-20 20:00:40 +03:00
Spec for mergeConfig, finalize logic
This commit is contained in:
+16
-10
@@ -16,18 +16,20 @@ module.exports = function mergeConfig(config1, config2) {
|
|||||||
var config = {};
|
var config = {};
|
||||||
|
|
||||||
utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {
|
utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {
|
||||||
config[prop] = config2[prop];
|
if (typeof config2[prop] !== 'undefined') {
|
||||||
|
config[prop] = config2[prop];
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
utils.forEach(['headers', 'auth', 'proxy'], function mergeValues(prop) {
|
utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {
|
||||||
if (typeof config2[prop] !== 'undefined') {
|
if (utils.isObject(config2[prop])) {
|
||||||
if (typeof config2[prop] === 'object') {
|
config[prop] = utils.deepMerge(config1[prop], config2[prop]);
|
||||||
config[prop] = utils.deepMerge(config1[prop], config2[prop]);
|
} else if (typeof config2[prop] !== 'undefined') {
|
||||||
} else {
|
config[prop] = config2[prop];
|
||||||
config[prop] = config2[prop];
|
} else if (utils.isObject(config1[prop])) {
|
||||||
}
|
|
||||||
} else if (typeof config1[prop] !== 'undefined') {
|
|
||||||
config[prop] = utils.deepMerge(config1[prop]);
|
config[prop] = utils.deepMerge(config1[prop]);
|
||||||
|
} else if (typeof config1[prop] !== 'undefined') {
|
||||||
|
config[prop] = config1[prop];
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -37,7 +39,11 @@ module.exports = function mergeConfig(config1, config2) {
|
|||||||
'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',
|
'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',
|
||||||
'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken'
|
'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken'
|
||||||
], function defaultToConfig2(prop) {
|
], function defaultToConfig2(prop) {
|
||||||
config[prop] = typeof config2[prop] === 'undefined' ? config1[prop] : config2[prop];
|
if (typeof config2[prop] !== 'undefined') {
|
||||||
|
config[prop] = config2[prop];
|
||||||
|
} else if (typeof config1[prop] !== 'undefined') {
|
||||||
|
config[prop] = config1[prop];
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ function getDefaultAdapter() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var defaults = {
|
var defaults = {
|
||||||
method: 'get',
|
|
||||||
adapter: getDefaultAdapter(),
|
adapter: getDefaultAdapter(),
|
||||||
|
|
||||||
transformRequest: [function transformRequest(data, headers) {
|
transformRequest: [function transformRequest(data, headers) {
|
||||||
|
|||||||
@@ -0,0 +1,69 @@
|
|||||||
|
var defaults = require('../../../lib/defaults');
|
||||||
|
var mergeConfig = require('../../../lib/core/mergeConfig');
|
||||||
|
|
||||||
|
describe('core::mergeConfig', function() {
|
||||||
|
it('should accept undefined for second argument', function() {
|
||||||
|
expect(mergeConfig(defaults, undefined)).toEqual(defaults);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should accept an object for second argument', function() {
|
||||||
|
expect(mergeConfig(defaults, {})).toEqual(defaults);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not leave references', function() {
|
||||||
|
var merged = mergeConfig(defaults, {});
|
||||||
|
expect(merged).not.toBe(defaults);
|
||||||
|
expect(merged.headers).not.toBe(defaults.headers);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should allow setting request options', function() {
|
||||||
|
var config = {
|
||||||
|
url: '__sample url__',
|
||||||
|
method: '__sample method__',
|
||||||
|
params: '__sample params__',
|
||||||
|
data: { foo: true }
|
||||||
|
};
|
||||||
|
var merged = mergeConfig(defaults, config);
|
||||||
|
expect(merged.url).toEqual(config.url);
|
||||||
|
expect(merged.method).toEqual(config.method);
|
||||||
|
expect(merged.params).toEqual(config.params);
|
||||||
|
expect(merged.data).toEqual(config.data);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should not inherit request options', function() {
|
||||||
|
var localDefaults = {
|
||||||
|
url: '__sample url__',
|
||||||
|
method: '__sample method__',
|
||||||
|
params: '__sample params__',
|
||||||
|
data: { foo: true }
|
||||||
|
};
|
||||||
|
var merged = mergeConfig(localDefaults, {});
|
||||||
|
expect(merged.url).toEqual(undefined);
|
||||||
|
expect(merged.method).toEqual(undefined);
|
||||||
|
expect(merged.params).toEqual(undefined);
|
||||||
|
expect(merged.data).toEqual(undefined);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should merge auth, headers, proxy with defaults', function() {
|
||||||
|
expect(mergeConfig({ auth: undefined }, { auth: { user: 'foo', pass: 'test' } })).toEqual({
|
||||||
|
auth: { user: 'foo', pass: 'test' }
|
||||||
|
});
|
||||||
|
expect(mergeConfig({ auth: { user: 'foo', pass: 'test' } }, { auth: { pass: 'foobar' } })).toEqual({
|
||||||
|
auth: { user: 'foo', pass: 'foobar' }
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should overwrite auth, headers, proxy with a non-object value', function() {
|
||||||
|
expect(mergeConfig({ auth: { user: 'foo', pass: 'test' } }, { auth: false })).toEqual({
|
||||||
|
auth: false
|
||||||
|
});
|
||||||
|
expect(mergeConfig({ auth: { user: 'foo', pass: 'test' } }, { auth: null })).toEqual({
|
||||||
|
auth: null
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should allow setting other options', function() {
|
||||||
|
var merged = mergeConfig(defaults, { timeout: 123 });
|
||||||
|
expect(merged.timeout).toEqual(123);
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in New Issue
Block a user