diff --git a/lib/adapters/xhr.js b/lib/adapters/xhr.js index 0d3abb8..3ff6861 100644 --- a/lib/adapters/xhr.js +++ b/lib/adapters/xhr.js @@ -34,9 +34,10 @@ module.exports = function xhrAdapter(resolve, reject, config) { if (request && request.readyState === 4) { // Prepare the response var headers = parseHeaders(request.getAllResponseHeaders()); + var responseData = ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response; var response = { data: transformData( - ['text', ''].indexOf(config.responseType || '') !== -1 ? request.responseText : request.response, + responseData, headers, config.transformResponse ), diff --git a/test/specs/wrapper.spec.js b/test/specs/wrapper.spec.js index cbcfa08..1063a73 100644 --- a/test/specs/wrapper.spec.js +++ b/test/specs/wrapper.spec.js @@ -166,4 +166,41 @@ describe('wrapper', function () { expect(request.requestHeaders['content-type']).toEqual(undefined); }); }); + + // TODO this won't work until karma-jasmine updates to jasmine-ajax 2.99.0 + /* + it('should support array buffer response', function () { + var request, response; + + runs(function () { + axios({ + url: '/foo', + responseType: 'arraybuffer' + }).then(function (data) { + response = data; + }); + }); + + waitsFor(function () { + return request = jasmine.Ajax.requests.mostRecent(); + }, 'waiting for the request', 100); + + runs(function () { + request.response({ + status: 200, + response: new ArrayBuffer(16) + }); + request.response = new ArrayBuffer(16); + }); + + waitsFor(function () { + return response; + }, 'waiting for the response', 100); + + runs(function () { + expect(response.data.byteLength).toBe(16); + }); + }); + */ + });