From 6fe71b31be8802f71e99aae8c208c8a0a17b2eee Mon Sep 17 00:00:00 2001 From: James Dixon Date: Thu, 28 Apr 2016 18:33:21 -0600 Subject: [PATCH] ignores query param serialization on when content is jsonapi (fixes #99) --- addon/ajax-request.js | 2 +- tests/unit/ajax-request-test.js | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/addon/ajax-request.js b/addon/ajax-request.js index 0cc09eac..2478f6ba 100644 --- a/addon/ajax-request.js +++ b/addon/ajax-request.js @@ -75,7 +75,7 @@ export default class AjaxRequest { url: hash.url }; - if (isJSONAPIContentType(hash.headers['Content-Type'])) { + if (isJSONAPIContentType(hash.headers['Content-Type']) && requestData.type !== 'GET') { if (typeof hash.data === 'object') { hash.data = JSON.stringify(hash.data); } diff --git a/tests/unit/ajax-request-test.js b/tests/unit/ajax-request-test.js index 90cb7bfc..f5b42f7d 100644 --- a/tests/unit/ajax-request-test.js +++ b/tests/unit/ajax-request-test.js @@ -615,6 +615,30 @@ test('it JSON encodes JSON:API request data automatically', function(assert) { }); }); +test('it does not JSON encode query parameters when JSON:API headers are present', function(assert) { + assert.expect(1); + + server.get('/test', ({ queryParams }) => { + const { foo } = queryParams; + assert.equal(foo, 'bar', 'Correctly received query param'); + return jsonResponse(); + }); + + class RequestWithHeaders extends AjaxRequest { + get headers() { + return { + 'Content-Type': 'application/vnd.api+json' + }; + } + } + const service = new RequestWithHeaders(); + return service.request('/test', { + data: { + foo: 'bar' + } + }); +}); + test('it JSON encodes JSON:API "extension" request data automatically', function(assert) { assert.expect(1);