From e5523e273746ef835c0fc6ce102ad12f966f0a39 Mon Sep 17 00:00:00 2001 From: Taras Mankovski Date: Sat, 20 Feb 2016 10:38:25 -0500 Subject: [PATCH 1/2] Starting preparation for ember-ajax --- addon/adapters/rest.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/addon/adapters/rest.js b/addon/adapters/rest.js index ebfc66aede8..906b3b86567 100644 --- a/addon/adapters/rest.js +++ b/addon/adapters/rest.js @@ -989,6 +989,13 @@ var RESTAdapter = Adapter.extend(BuildURLMixin, { @return {Promise} promise */ ajax(url, type, options) { + + let ajaxService = this.get('ajaxService'); + if (ajaxService) { + options.type = type; + return ajaxService.ajax(url, options); + } + var adapter = this; var requestData = { From cd8443fdd630a3d51fd0b103dda573007d98dde8 Mon Sep 17 00:00:00 2001 From: Vadim Kazakov Date: Wed, 15 Jun 2016 09:13:29 -0600 Subject: [PATCH 2/2] wrap ember-ajax in feature flag * add test for ember-ajax injection --- addon/adapters/rest.js | 14 +++++++------ config/features.json | 3 ++- tests/unit/adapters/rest-adapter/ajax-test.js | 21 +++++++++++++++++++ 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/addon/adapters/rest.js b/addon/adapters/rest.js index 906b3b86567..0cdbaff2488 100644 --- a/addon/adapters/rest.js +++ b/addon/adapters/rest.js @@ -989,13 +989,15 @@ var RESTAdapter = Adapter.extend(BuildURLMixin, { @return {Promise} promise */ ajax(url, type, options) { - - let ajaxService = this.get('ajaxService'); - if (ajaxService) { - options.type = type; - return ajaxService.ajax(url, options); + + if (isEnabled('ds-ember-ajax-support')) { + let ajaxService = this.get('ajaxService'); + if (ajaxService) { + options.type = type; + return ajaxService.ajax(url, options); + } } - + var adapter = this; var requestData = { diff --git a/config/features.json b/config/features.json index 0e486cb5006..fcfb6482933 100644 --- a/config/features.json +++ b/config/features.json @@ -7,5 +7,6 @@ "ds-links-in-record-array": null, "ds-overhaul-references": null, "ds-payload-type-hooks": null, - "ds-check-should-serialize-relationships": null + "ds-check-should-serialize-relationships": null, + "ds-ember-ajax-support": null } diff --git a/tests/unit/adapters/rest-adapter/ajax-test.js b/tests/unit/adapters/rest-adapter/ajax-test.js index 1dc80a2c662..7198472b0cd 100644 --- a/tests/unit/adapters/rest-adapter/ajax-test.js +++ b/tests/unit/adapters/rest-adapter/ajax-test.js @@ -129,3 +129,24 @@ test("ajaxOptions() empty data", function(assert) { url: 'example.com' }); }); + +if (isEnabled('ds-ember-ajax-support')) { + test("ajaxService injection", function(assert) { + let done = assert.async(); + let ajaxOptions = { + data: {} + }; + let ajaxUrl = 'https://example.com'; + let ajaxType = 'POST'; + let ajaxService = { + ajax(url, options) { + assert.deepEqual(options, Ember.merge(ajaxOptions, { type: ajaxType })); + assert.equal(url, ajaxUrl); + done(); + } + }; + adapter.set('ajaxService', ajaxService); + + adapter.ajax(ajaxUrl, ajaxType, ajaxOptions); + }); +}