2
0
mirror of https://github.com/tenrok/axios.git synced 2026-06-11 18:02:32 +03:00

Fixing tests for IE

This commit is contained in:
Matt Zabriskie
2016-03-05 23:17:39 -07:00
parent 6d84717cba
commit dc07ef2559
11 changed files with 147 additions and 202 deletions
+28
View File
@@ -0,0 +1,28 @@
var attempts = 0;
var MAX_ATTEMPTS = 5;
var ATTEMPT_DELAY_FACTOR = 5;
module.exports = function getAjaxRequest() {
return new Promise(function (resolve, reject) {
attempts = 0;
attemptGettingAjaxRequest(resolve, reject);
});
}
function attemptGettingAjaxRequest(resolve, reject) {
var delay = attempts * attempts * ATTEMPT_DELAY_FACTOR;
if (attempts++ > MAX_ATTEMPTS) {
reject(new Error('No request was found'));
return;
}
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
if (request) {
resolve(request);
} else {
attemptGettingAjaxRequest(resolve, reject);
}
}, delay);
}
+11 -20
View File
@@ -1,6 +1,7 @@
var axios = require('../../index');
var defaults = require('../../lib/defaults');
var utils = require('../../lib/utils');
var getAjaxRequest = require('./__getAjaxRequest');
describe('defaults', function () {
var __defaults;
@@ -39,12 +40,10 @@ describe('defaults', function () {
it('should use global defaults config', function (done) {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
done();
}, 0);
});
});
it('should use modified defaults config', function (done) {
@@ -52,12 +51,10 @@ describe('defaults', function () {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('http://example.com/foo');
done();
}, 0);
});
});
it('should use request config', function (done) {
@@ -65,12 +62,10 @@ describe('defaults', function () {
baseURL: 'http://www.example.com'
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('http://www.example.com/foo');
done();
}, 0);
});
});
it('should use default config for custom instance', function (done) {
@@ -82,12 +77,10 @@ describe('defaults', function () {
instance.get('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders[instance.defaults.xsrfHeaderName]).toEqual('foobarbaz');
done();
}, 0);
});
});
it('should use header config', function (done) {
@@ -112,9 +105,7 @@ describe('defaults', function () {
}
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders).toEqual(
utils.merge(defaults.headers.common, {
'X-COMMON-HEADER': 'commonHeaderValue',
@@ -124,7 +115,7 @@ describe('defaults', function () {
})
);
done();
}, 0);
});
});
});
+11 -17
View File
@@ -1,4 +1,5 @@
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
function testHeaderValue(headers, key, val) {
var found = false;
@@ -34,16 +35,14 @@ describe('headers', function () {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
for (var key in headers) {
if (headers.hasOwnProperty(key)) {
expect(request.requestHeaders[key]).toEqual(headers[key]);
}
}
done();
}, 0);
});
});
it('should add extra headers for post', function (done) {
@@ -51,16 +50,14 @@ describe('headers', function () {
axios.post('/foo', 'fizz=buzz');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
for (var key in headers) {
if (headers.hasOwnProperty(key)) {
expect(request.requestHeaders[key]).toEqual(headers[key]);
}
}
done();
}, 0);
});
});
it('should use application/json when posting an object', function (done) {
@@ -69,30 +66,27 @@ describe('headers', function () {
lastName: 'bar'
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
testHeaderValue(request.requestHeaders, 'Content-Type', 'application/json;charset=utf-8');
done();
}, 0);
});
});
it('should remove content-type if data is empty', function (done) {
axios.post('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
testHeaderValue(request.requestHeaders, 'Content-Type', undefined);
done();
}, 0);
});
});
it('should preserve content-type if data is false', function (done) {
axios.post('/foo', false);
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
testHeaderValue(request.requestHeaders, 'Content-Type', 'application/x-www-form-urlencoded');
done();
}, 0);
});
});
});
+7 -12
View File
@@ -1,4 +1,5 @@
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
describe('instance', function () {
beforeEach(function () {
@@ -14,12 +15,10 @@ describe('instance', function () {
instance.get('/foo');
setTimeout(function () {
request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
done();
}, 0);
});
});
it('should use instance options', function (done) {
@@ -27,12 +26,10 @@ describe('instance', function () {
instance.get('/foo');
setTimeout(function () {
request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.timeout).toBe(1000);
done();
}, 0);
});
});
it('should have interceptors on the instance', function (done) {
@@ -52,9 +49,7 @@ describe('instance', function () {
response = res;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200
});
@@ -64,6 +59,6 @@ describe('instance', function () {
expect(response.config.bar).toEqual(true);
done();
});
}, 0);
});
});
});
+24 -39
View File
@@ -1,4 +1,5 @@
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
describe('interceptors', function () {
beforeEach(function () {
@@ -19,9 +20,7 @@ describe('interceptors', function () {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -29,7 +28,7 @@ describe('interceptors', function () {
expect(request.requestHeaders.test).toBe('added by interceptor');
done();
}, 0);
});
});
it('should add a request interceptor that returns a new config object', function (done) {
@@ -42,9 +41,7 @@ describe('interceptors', function () {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -53,10 +50,10 @@ describe('interceptors', function () {
expect(request.method).toBe('POST');
expect(request.url).toBe('/bar');
done();
}, 0);
});
});
it('should add a request interceptor that returns a promise', function (done) {
fit('should add a request interceptor that returns a promise', function (done) {
axios.interceptors.request.use(function (config) {
return new Promise(function (resolve) {
// do something async
@@ -69,9 +66,7 @@ describe('interceptors', function () {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -79,7 +74,7 @@ describe('interceptors', function () {
expect(request.requestHeaders.async).toBe('promise');
done();
}, 100);
});
});
it('should add multiple request interceptors', function (done) {
@@ -98,7 +93,7 @@ describe('interceptors', function () {
axios('/foo');
setTimeout(function () {
getAjaxRequest().then(function (request) {
var request = jasmine.Ajax.requests.mostRecent();
request.respondWith({
@@ -110,7 +105,7 @@ describe('interceptors', function () {
expect(request.requestHeaders.test2).toBe('2');
expect(request.requestHeaders.test3).toBe('3');
done();
}, 0);
});
});
it('should add a response interceptor', function (done) {
@@ -125,9 +120,7 @@ describe('interceptors', function () {
response = data;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -136,8 +129,8 @@ describe('interceptors', function () {
setTimeout(function () {
expect(response.data).toBe('OK - modified by interceptor');
done();
}, 0);
}, 0);
});
});
});
it('should add a response interceptor that returns a new data object', function (done) {
@@ -153,9 +146,7 @@ describe('interceptors', function () {
response = data;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -164,8 +155,8 @@ describe('interceptors', function () {
setTimeout(function () {
expect(response.data).toBe('stuff');
done();
}, 0);
}, 0);
});
});
});
it('should add a response interceptor that returns a promise', function (done) {
@@ -185,9 +176,7 @@ describe('interceptors', function () {
response = data;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -197,7 +186,7 @@ describe('interceptors', function () {
expect(response.data).toBe('you have been promised!');
done();
}, 100);
}, 0);
});
});
it('should add multiple response interceptors', function (done) {
@@ -220,9 +209,7 @@ describe('interceptors', function () {
response = data;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -231,8 +218,8 @@ describe('interceptors', function () {
setTimeout(function () {
expect(response.data).toBe('OK123');
done();
}, 0);
}, 0);
});
});
});
it('should allow removing interceptors', function (done) {
@@ -257,9 +244,7 @@ describe('interceptors', function () {
response = data;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: 'OK'
@@ -268,7 +253,7 @@ describe('interceptors', function () {
setTimeout(function () {
expect(response.data).toBe('OK13');
done();
}, 0);
}, 0);
});
});
});
});
+13 -24
View File
@@ -1,4 +1,5 @@
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
describe('options', function () {
beforeEach(function () {
@@ -12,12 +13,10 @@ describe('options', function () {
it('should default method to get', function (done) {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.method).toBe('GET');
done();
}, 0);
});
});
it('should accept headers', function (done) {
@@ -27,12 +26,10 @@ describe('options', function () {
}
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders['X-Requested-With']).toEqual('XMLHttpRequest');
done();
}, 0);
});
});
it('should accept params', function (done) {
@@ -43,12 +40,10 @@ describe('options', function () {
}
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo?foo=123&bar=456');
done();
}, 0);
});
});
it('should allow overriding default headers', function (done) {
@@ -58,12 +53,10 @@ describe('options', function () {
}
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders['Accept']).toEqual('foo/bar');
done();
}, 0);
});
});
it('should accept base URL', function (done) {
@@ -73,12 +66,10 @@ describe('options', function () {
instance.get('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('http://test.com/foo');
done();
}, 0);
});
});
it('should ignore base URL if request URL is absolute', function (done) {
@@ -88,11 +79,9 @@ describe('options', function () {
instance.get('http://someotherurl.com/');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('http://someotherurl.com/');
done();
}, 0);
});
});
});
+6 -7
View File
@@ -1,5 +1,6 @@
require('es6-promise').polyfill();
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
describe('promise', function () {
beforeEach(function () {
@@ -17,9 +18,7 @@ describe('promise', function () {
response = r;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: '{"hello":"world"}'
@@ -32,8 +31,8 @@ describe('promise', function () {
expect(response.headers['content-type']).toEqual('application/json');
expect(response.config.url).toEqual('/foo');
done();
}, 0);
}, 0);
});
});
});
it('should support all', function (done) {
@@ -46,7 +45,7 @@ describe('promise', function () {
setTimeout(function () {
expect(fulfilled).toEqual(true);
done();
}, 0);
}, 100);
});
it('should support spread', function (done) {
@@ -70,6 +69,6 @@ describe('promise', function () {
expect(sum).toEqual(123 + 456);
expect(result).toEqual('hello world');
done();
}, 0);
}, 100);
});
});
+24 -44
View File
@@ -1,4 +1,5 @@
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
describe('requests', function () {
beforeEach(function () {
@@ -12,36 +13,30 @@ describe('requests', function () {
it('should treat single string arg as url', function (done) {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
expect(request.method).toBe('GET');
done();
}, 0);
});
});
it('should allow string arg as url, and config arg', function (done) {
axios.post('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
expect(request.method).toBe('POST');
done();
}, 0);
});
});
it('should make an http request', function (done) {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.url).toBe('/foo');
done();
}, 0);
});
});
it('should reject on network errors', function (done) {
@@ -70,8 +65,7 @@ describe('requests', function () {
response = res;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
statusText: 'OK',
@@ -87,10 +81,8 @@ describe('requests', function () {
expect(response.statusText).toEqual('OK');
expect(response.headers['content-type']).toEqual('application/json');
done();
}, 0);
}, 0);
});
});
});
@@ -101,9 +93,7 @@ describe('requests', function () {
response = res;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
statusText: 'OK',
@@ -119,8 +109,8 @@ describe('requests', function () {
expect(response.statusText).toEqual('OK');
expect(response.headers['content-type']).toEqual('application/json');
done();
}, 0);
}, 0);
});
});
});
// https://github.com/mzabriskie/axios/issues/201
@@ -131,9 +121,7 @@ describe('requests', function () {
response = res
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 1223,
statusText: 'Unknown'
@@ -143,8 +131,8 @@ describe('requests', function () {
expect(response.status).toEqual(204);
expect(response.statusText).toEqual('No Content');
done();
}, 0);
}, 0);
});
});
});
it('should allow overriding Content-Type header case-insensitive', function (done) {
@@ -159,9 +147,7 @@ describe('requests', function () {
response = res;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders['Content-Type']).toEqual(contentType);
done();
});
@@ -174,15 +160,13 @@ describe('requests', function () {
axios.post('/foo', input.buffer);
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
var output = new Int8Array(request.params.buffer);
expect(output.length).toEqual(2);
expect(output[0]).toEqual(1);
expect(output[1]).toEqual(2);
done();
}, 0);
});
});
it('should support binary data as array buffer view', function (done) {
@@ -192,15 +176,13 @@ describe('requests', function () {
axios.post('/foo', input);
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
var output = new Int8Array(request.params.buffer);
expect(output.length).toEqual(2);
expect(output[0]).toEqual(1);
expect(output[1]).toEqual(2);
done();
}, 0);
});
});
it('should support array buffer response', function (done) {
@@ -221,9 +203,7 @@ describe('requests', function () {
response = data;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
response: str2ab('Hello world')
@@ -232,8 +212,8 @@ describe('requests', function () {
setTimeout(function () {
expect(response.data.byteLength).toBe(22);
done();
}, 0);
}, 0);
});
});
});
});
+12 -21
View File
@@ -1,4 +1,5 @@
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
describe('transform', function () {
beforeEach(function () {
@@ -16,12 +17,10 @@ describe('transform', function () {
axios.post('/foo', data);
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.params).toEqual('{"foo":"bar"}');
done();
}, 0);
});
});
it('should transform string to JSON', function (done) {
@@ -31,9 +30,7 @@ describe('transform', function () {
response = data;
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
request.respondWith({
status: 200,
responseText: '{"foo": "bar"}'
@@ -43,8 +40,8 @@ describe('transform', function () {
expect(typeof response.data).toEqual('object');
expect(response.data.foo).toEqual('bar');
done();
}, 0);
}, 0);
});
});
});
it('should override default transform', function (done) {
@@ -58,12 +55,10 @@ describe('transform', function () {
}
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(typeof request.params).toEqual('object');
done();
}, 0);
});
});
it('should allow an Array of transformers', function (done) {
@@ -79,12 +74,10 @@ describe('transform', function () {
)
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.params).toEqual('{"foo":"baz"}');
done();
}, 0);
});
});
it('should allowing mutating headers', function (done) {
@@ -96,11 +89,9 @@ describe('transform', function () {
}
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders['X-Authorization']).toEqual(token);
done();
}, 0);
});
});
});
+7 -14
View File
@@ -1,4 +1,5 @@
var axios = require('../../index');
var getAjaxRequest = require('./__getAjaxRequest');
describe('xsrf', function () {
beforeEach(function () {
@@ -13,12 +14,10 @@ describe('xsrf', function () {
it('should not set xsrf header if cookie is null', function (done) {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders[axios.defaults.xsrfHeaderName]).toEqual(undefined);
done();
}, 0);
});
});
it('should set xsrf header if cookie is set', function (done) {
@@ -26,12 +25,10 @@ describe('xsrf', function () {
axios('/foo');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders[axios.defaults.xsrfHeaderName]).toEqual('12345');
done();
}, 0);
});
});
it('should not set xsrf header for cross origin', function (done) {
@@ -39,9 +36,7 @@ describe('xsrf', function () {
axios('http://example.com/');
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders[axios.defaults.xsrfHeaderName]).toEqual(undefined);
done();
});
@@ -54,9 +49,7 @@ describe('xsrf', function () {
withCredentials: true
});
setTimeout(function () {
var request = jasmine.Ajax.requests.mostRecent();
getAjaxRequest().then(function (request) {
expect(request.requestHeaders[axios.defaults.xsrfHeaderName]).toEqual('12345');
done();
});