diff --git a/addon/adapters/application.js b/addon/adapters/application.js index c6fa0ee..cc8957b 100644 --- a/addon/adapters/application.js +++ b/addon/adapters/application.js @@ -4,10 +4,11 @@ **/ import Ember from 'ember'; +import RSVP from 'rsvp'; import { pluralize } from 'ember-inflector'; import FetchMixin from 'ember-jsonapi-resources/mixins/fetch'; -const { Evented, RSVP, getOwner } = Ember; +const { Evented, getOwner } = Ember; /** Adapter for a JSON API endpoint, use as a service for your backend @@ -321,7 +322,7 @@ export default Ember.Object.extend(FetchMixin, Evented, { @method fetch @param {String} url @param {Object} options may include a query object or an update flag - @return {Ember.RSVP.Promise} + @return {Promise} */ fetch(url, options = {}) { url = this.fetchUrl(url); diff --git a/addon/mixins/fetch.js b/addon/mixins/fetch.js index 3162f68..89de3e5 100644 --- a/addon/mixins/fetch.js +++ b/addon/mixins/fetch.js @@ -3,6 +3,7 @@ @submodule fetch **/ import Ember from 'ember'; +import RSVP from 'rsvp'; import { ServerError, ClientError, FetchError } from 'ember-jsonapi-resources/utils/errors'; /** @@ -42,10 +43,10 @@ export default Ember.Mixin.create({ @param {String} url @param {Object} options - May include a query object or an update flag @param {Boolean} isUpdate - @return {Ember.RSVP.Promise} + @return {Promise} */ _fetch(url, options, isUpdate) { - return new Ember.RSVP.Promise(function(resolve, reject) { + return new RSVP.Promise(function(resolve, reject) { window.fetch(url, options).then(function(response) { if (response.status >= 500) { this.fetchServerErrorHandler(response, reject); @@ -160,13 +161,13 @@ export default Ember.Mixin.create({ @param {String} url @param {Object} options - may include a query object or an update flag @param {Boolean} isUpdate - @return {Ember.RSVP.Promise} + @return {Promise} @requires jQuery */ _ajax(url, options, isUpdate) { options.data = options.body; delete options.body; - return new Ember.RSVP.Promise(function(resolve, reject) { + return new RSVP.Promise(function(resolve, reject) { Ember.$.ajax(url, options) .done(this.ajaxDoneHandler(resolve, isUpdate)) .fail(this.ajaxFailHandler(reject)); diff --git a/addon/utils/related-proxy.js b/addon/utils/related-proxy.js index a76a19d..5dac06e 100644 --- a/addon/utils/related-proxy.js +++ b/addon/utils/related-proxy.js @@ -5,6 +5,7 @@ **/ import Ember from 'ember'; +import RSVP from 'rsvp'; import { pluralize } from 'ember-inflector'; /** @@ -157,7 +158,7 @@ const RelatedProxyUtil = Ember.Object.extend({ } else { content = this.serviceCacheLookup(service, data); } - return (content) ? Ember.RSVP.Promise.resolve(content) : null; + return (content) ? RSVP.Promise.resolve(content) : null; }, /** diff --git a/tests/acceptance/polymorphic-test.js b/tests/acceptance/polymorphic-test.js index 2671684..3b08347 100644 --- a/tests/acceptance/polymorphic-test.js +++ b/tests/acceptance/polymorphic-test.js @@ -1,4 +1,5 @@ import Ember from 'ember'; +import RSVP from 'rsvp'; import { module, test } from 'qunit'; import startApp from '../../tests/helpers/start-app'; @@ -94,46 +95,46 @@ function setupFetchResonses(sandbox) { } function picturesMockResponse() { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(picturesMock); + return RSVP.Promise.resolve(picturesMock); } }); } function pictures1MockResponse() { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(pictures1Mock); + return RSVP.Promise.resolve(pictures1Mock); } }); } function pictures1ImageableMockResponse() { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(pictures1ImageableMock); + return RSVP.Promise.resolve(pictures1ImageableMock); } }); } function pictures5MockResponse() { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(pictures5Mock); + return RSVP.Promise.resolve(pictures5Mock); } }); } function pictures5ImageableMockResponse() { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(pictures5ImageableMock); + return RSVP.Promise.resolve(pictures5ImageableMock); } }); } diff --git a/tests/dummy/app/routes/post.js b/tests/dummy/app/routes/post.js index e0308ed..923965c 100644 --- a/tests/dummy/app/routes/post.js +++ b/tests/dummy/app/routes/post.js @@ -1,8 +1,9 @@ import Ember from 'ember'; +import RSVP from 'rsvp'; export default Ember.Route.extend({ model(params) { - return new Ember.RSVP.Promise(function (resolve, reject) { + return new RSVP.Promise(function (resolve, reject) { const found = this.store.all('posts').filter(function (post) { return post.get('id') === params.post_id; }); diff --git a/tests/helpers/resources.js b/tests/helpers/resources.js index 65bac22..ccc023a 100644 --- a/tests/helpers/resources.js +++ b/tests/helpers/resources.js @@ -1,6 +1,7 @@ import Resource from 'ember-jsonapi-resources/models/resource'; import { attr, hasOne, hasMany } from 'ember-jsonapi-resources/models/resource'; import Ember from 'ember'; +import RSVP from 'rsvp'; export const Post = Resource.extend({ type: 'posts', @@ -62,7 +63,7 @@ export function mockServices() { let types = Ember.String.w('posts authors comments commenters people employees supervisors'); let mockService = Ember.Service.extend({ cacheLookup(/*id*/) { return undefined; }, - findRelated() { return Ember.RSVP.resolve(null); } + findRelated() { return RSVP.resolve(null); } }); for (let i = 0; i < types.length; i++) { this.registry.register('service:' + types[i], mockService); diff --git a/tests/unit/adapters/application-test.js b/tests/unit/adapters/application-test.js index 0204c05..54ac8e2 100644 --- a/tests/unit/adapters/application-test.js +++ b/tests/unit/adapters/application-test.js @@ -1,6 +1,7 @@ import { moduleFor, test } from 'ember-qunit'; import Adapter from 'ember-jsonapi-resources/adapters/application'; import Ember from 'ember'; +import RSVP from 'rsvp'; import { setup, teardown, mockServices } from 'dummy/tests/helpers/resources'; import postMock from 'fixtures/api/posts/1'; @@ -17,7 +18,7 @@ moduleFor('adapter:application', 'Unit | Adapter | application', { beforeEach() { setup.call(this); sandbox = window.sinon.sandbox.create(); - Ember.RSVP.configure('onerror', RSVPonerror); + RSVP.configure('onerror', RSVPonerror); window.localStorage.removeItem('AuthorizationHeader'); }, afterEach() { @@ -29,7 +30,7 @@ moduleFor('adapter:application', 'Unit | Adapter | application', { test('#find calls #findOne when options arg is a string', function(assert) { const adapter = this.subject(); - sandbox.stub(adapter, 'findOne', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'findOne', function () { return RSVP.Promise.resolve(null); }); let promise = adapter.find('1'); assert.ok(typeof promise.then === 'function', 'returns a thenable'); assert.ok(adapter.findOne.calledOnce, 'findOne called'); @@ -38,7 +39,7 @@ test('#find calls #findOne when options arg is a string', function(assert) { test('#find calls #findOne when options arg is an object having an id property', function(assert) { const adapter = this.subject(); - sandbox.stub(adapter, 'findOne', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'findOne', function () { return RSVP.Promise.resolve(null); }); let options = { id: '1', query: {sort: '-date'} }; let promise = adapter.find(options); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -48,7 +49,7 @@ test('#find calls #findOne when options arg is an object having an id property', test('#find calls #findQuery when options arg is undefined', function(assert) { const adapter = this.subject(); - sandbox.stub(adapter, 'findQuery', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'findQuery', function () { return RSVP.Promise.resolve(null); }); let promise = adapter.find(undefined); assert.ok(typeof promise.then === 'function', 'returns a thenable'); assert.ok(adapter.findQuery.calledOnce, 'findQuery called'); @@ -56,7 +57,7 @@ test('#find calls #findQuery when options arg is undefined', function(assert) { test('#find calls #findQuery with options object (that has no id property)', function(assert) { const adapter = this.subject(); - sandbox.stub(adapter, 'findQuery', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'findQuery', function () { return RSVP.Promise.resolve(null); }); let options = { query: {sort: '-date'} }; let promise = adapter.find(options); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -66,7 +67,7 @@ test('#find calls #findQuery with options object (that has no id property)', fun test('#findOne calls #fetch with url and options object with method:GET', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let promise = adapter.findOne('1'); assert.ok(typeof promise.then === 'function', 'returns a thenable'); assert.ok(adapter.fetch.calledOnce, 'fetch called'); @@ -75,7 +76,7 @@ test('#findOne calls #fetch with url and options object with method:GET', functi test('#findQuery calls #fetch url and options object with method:GET', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let promise = adapter.findQuery(); assert.ok(typeof promise.then === 'function', 'returns a thenable'); assert.ok(adapter.fetch.calledOnce, 'fetch called'); @@ -84,7 +85,7 @@ test('#findQuery calls #fetch url and options object with method:GET', function( test('#findQuery calls #fetch url including a query', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let promise = adapter.findQuery({ query: { sort:'-desc' } }); assert.ok(typeof promise.then === 'function', 'returns a thenable'); assert.ok(adapter.fetch.calledOnce, 'fetch called'); @@ -98,7 +99,7 @@ test('#findRelated', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); let service = this.container.lookup('service:authors'); let related = this.container.lookup('model:author').create(authorMock.data); - sandbox.stub(service, 'fetch', function () { return Ember.RSVP.Promise.resolve(related); }); + sandbox.stub(service, 'fetch', function () { return RSVP.Promise.resolve(related); }); let promise = adapter.findRelated('author', url); assert.ok(typeof promise.then === 'function', 'returns a thenable'); assert.ok(service.fetch.calledOnce, 'authors service#fetch method called'); @@ -126,7 +127,7 @@ test('#findRelated can be called with optional type for the resource', function } }); let stub = sandbox.stub(service, 'findRelated', function () { - return Ember.RSVP.Promise.resolve(supervisor); + return RSVP.Promise.resolve(supervisor); }); let resource = this.container.lookup('model:employee').create({ type: 'employees', @@ -161,7 +162,7 @@ test('#createResource', function(assert) { assert.equal(newResource.get('id'), null, 'new resource does not have an id'); adapter.serializer = { serialize: function () { return data; } }; let persistedResource = postFactory.create(postMock.data); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(persistedResource); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(persistedResource); }); let promise = adapter.createResource(newResource); assert.ok(typeof promise.then === 'function', 'returns a thenable'); assert.ok(adapter.fetch.calledOnce, '#fetch method called'); @@ -186,7 +187,7 @@ test('#updateResource', function(assert) { } }; adapter.serializer = { serializeChanged: function () { return payload; } }; - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); let promise = adapter.updateResource(resource); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -200,7 +201,7 @@ test('when serializer returns null (nothing changed) #updateResource return prom const done = assert.async(); let adapter = this.subject({type: 'posts', url: '/posts'}); adapter.serializer = { serializeChanged: function () { return null; } }; - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); let promise = adapter.updateResource(resource); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -215,7 +216,7 @@ test('#createRelationship (to-many)', function(assert) { const done = assert.async(); mockServices.call(this); let adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); let promise = adapter.createRelationship(resource, 'comments', '1'); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -231,7 +232,7 @@ test('#createRelationship (to-many)', function(assert) { test('#createRelationship (to-one)', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); mockServices.call(this); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); let promise = adapter.createRelationship(resource, 'author', '1'); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -245,7 +246,7 @@ test('#deleteRelationship (to-many)', function(assert) { const done = assert.async(); mockServices.call(this); let adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); let promise = adapter.deleteRelationship(resource, 'comments', '1'); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -261,7 +262,7 @@ test('#deleteRelationship (to-many)', function(assert) { test('#deleteRelationship (to-one)', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); mockServices.call(this); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); let promise = adapter.deleteRelationship(resource, 'author', '1'); assert.ok(typeof promise.then === 'function', 'returns a thenable'); @@ -275,7 +276,7 @@ test('#patchRelationship (to-many)', function(assert) { const done = assert.async(); mockServices.call(this); let adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); resource.addRelationship('comments', '1'); let promise = adapter.patchRelationship(resource, 'comments'); @@ -292,7 +293,7 @@ test('#patchRelationship (to-many)', function(assert) { test('#patchRelationship (to-one)', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); mockServices.call(this); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); resource.addRelationship('author', '1'); let promise = adapter.patchRelationship(resource, 'author'); @@ -305,7 +306,7 @@ test('#patchRelationship (to-one)', function(assert) { test('#deleteResource can be called with a string as the id for the resource', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let promise = adapter.deleteResource('1'); assert.ok(typeof promise.then === 'function', 'returns a thenable'); let msg = '#fetch called with url'; @@ -314,7 +315,7 @@ test('#deleteResource can be called with a string as the id for the resource', f test('#deleteResource can be called with a resource having a self link, and calls resource#destroy', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); sandbox.stub(resource, 'destroy', function () {}); let promise = adapter.deleteResource(resource); @@ -327,7 +328,7 @@ test('#deleteResource can be called with a resource having a self link, and call test('when called with resource argument, #deleteResource calls #cacheRemove', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); - sandbox.stub(adapter, 'fetch', function () { return Ember.RSVP.Promise.resolve(null); }); + sandbox.stub(adapter, 'fetch', function () { return RSVP.Promise.resolve(null); }); let resource = this.container.lookup('model:post').create(postMock.data); sandbox.stub(adapter, 'cacheRemove', function () {}); Ember.run(function() { @@ -340,9 +341,9 @@ test('#fetch calls #fetchURL to customize if needed', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); sandbox.stub(adapter, 'fetchUrl', function () {}); sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 204, - "text": function() { return Ember.RSVP.Promise.resolve(''); } + "text": function() { return RSVP.Promise.resolve(''); } }); }); let promise = adapter.fetch('/posts', { method: 'PATCH', body: 'json string here' }); @@ -356,10 +357,10 @@ test('#fetch calls #fetchOptions checking if the request is an update, if true s const adapter = this.subject({type: 'posts', url: '/posts'}); sandbox.stub(adapter, 'fetchUrl', function () {}); sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 202, "json": function() { - return Ember.RSVP.Promise.resolve({data: {}, meta: {}}); + return RSVP.Promise.resolve({data: {}, meta: {}}); } }); }); @@ -390,10 +391,10 @@ test('#cacheResource called after successful fetch', function(assert) { deserializeIncluded: function () { return; } }; sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(postsMock); + return RSVP.Promise.resolve(postsMock); } }); }); @@ -411,10 +412,10 @@ test('#cacheUpdate called after #updateResource success', function(assert) { const adapter = this.subject(); sandbox.stub(adapter, 'cacheUpdate', function () {}); sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(postsMock); + return RSVP.Promise.resolve(postsMock); } }); }); @@ -449,10 +450,10 @@ test('serializer#deserializeIncluded called after successful fetch', function(as deserializeIncluded: sandbox.spy() }; sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, "json": function() { - return Ember.RSVP.Promise.resolve(postMock); + return RSVP.Promise.resolve(postMock); } }); }); @@ -470,10 +471,10 @@ test('#fetch handles 5xx (ServerError) response status', function(assert) { const done = assert.async(); const adapter = this.subject({type: 'posts', url: '/posts'}); sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 500, "text": function() { - return Ember.RSVP.Promise.resolve(''); + return RSVP.Promise.resolve(''); } }); }); @@ -492,10 +493,10 @@ test('#fetch handles 4xx (Client Error) response status', function(assert) { const adapter = this.subject({type: 'posts', url: '/posts'}); sandbox.stub(adapter, 'fetchUrl', function () {}); sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 404, "text": function() { - return Ember.RSVP.Promise.resolve('{ "errors": [ { "status": 404 } ] }'); + return RSVP.Promise.resolve('{ "errors": [ { "status": 404 } ] }'); } }); }); @@ -514,9 +515,9 @@ test('#fetch handles 204 (Success, no content) response status w/o calling deser const adapter = this.subject({type: 'posts', url: '/posts'}); sandbox.stub(adapter, 'fetchUrl', function () {}); sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 204, - "text": function() { return Ember.RSVP.Promise.resolve(''); } + "text": function() { return RSVP.Promise.resolve(''); } }); }); sandbox.stub(adapter, 'cacheResource', function () {}); @@ -532,9 +533,9 @@ test('#fetch handles 200 (Success) response status', function(assert) { const done = assert.async(); const adapter = this.subject({type: 'posts', url: '/posts'}); sandbox.stub(window, 'fetch', function () { - return Ember.RSVP.Promise.resolve({ + return RSVP.Promise.resolve({ "status": 200, - "json": function() { return Ember.RSVP.Promise.resolve(postMock); } + "json": function() { return RSVP.Promise.resolve(postMock); } }); }); sandbox.stub(adapter, 'cacheResource', function () {}); diff --git a/tests/unit/mixins/fetch-test.js b/tests/unit/mixins/fetch-test.js index b82e4d9..c1847bf 100644 --- a/tests/unit/mixins/fetch-test.js +++ b/tests/unit/mixins/fetch-test.js @@ -1,4 +1,5 @@ import Ember from 'ember'; +import RSVP from 'rsvp'; import FetchMixin from '../../../mixins/fetch'; import { module, test } from 'qunit'; @@ -18,7 +19,7 @@ module('Unit | Mixin | fetch', { return url.match(/\/write-blanket-coverage/); }); this.server.autoRespond = true; - Ember.RSVP.configure('onerror', RSVPonerror); + RSVP.configure('onerror', RSVPonerror); window.localStorage.removeItem('AuthorizationHeader'); let FetchObject = Ember.Object.extend(FetchMixin); this.subject = FetchObject.create(); @@ -152,7 +153,7 @@ test('#fetchSuccessHandler handles response for empty has-one relationship', fun let done = assert.async(); let response = { "status": 200, - "json": function() { return Ember.RSVP.Promise.resolve({ data: null }); } + "json": function() { return RSVP.Promise.resolve({ data: null }); } }; let result = void 0; let resolve = function(resp) { result = resp; }; diff --git a/tests/unit/mixins/resource-operations-test.js b/tests/unit/mixins/resource-operations-test.js index 1a5e41b..c89f152 100644 --- a/tests/unit/mixins/resource-operations-test.js +++ b/tests/unit/mixins/resource-operations-test.js @@ -1,11 +1,10 @@ import Ember from 'ember'; +import RSVP from 'rsvp'; // import ResourceOperationsMixin from 'ember-jsonapi-resources/mixins/resource-operations'; import { module, test } from 'qunit'; import Resource from 'ember-jsonapi-resources/models/resource'; import { attr/*, hasOne, hasMany*/ } from 'ember-jsonapi-resources/models/resource'; -const { RSVP } = Ember; - let promiseResolved = function() { return RSVP.Promise.resolve(); }; // ResourceOperationsMixin is mixed into Resource so will use Resource for test subject. diff --git a/tests/unit/models/resource-test.js b/tests/unit/models/resource-test.js index f4f0958..a15c7ad 100644 --- a/tests/unit/models/resource-test.js +++ b/tests/unit/models/resource-test.js @@ -1,5 +1,6 @@ import { moduleFor, test } from 'ember-qunit'; import Ember from 'ember'; +import RSVP from 'rsvp'; import Resource from 'ember-jsonapi-resources/models/resource'; import { attr } from 'ember-jsonapi-resources/models/resource'; import { setup, teardown, mockServices } from 'dummy/tests/helpers/resources'; @@ -297,7 +298,7 @@ test('#removeRelationships', function(assert) { test('#updateRelationship, from resource-operations mixin', function(assert) { let serviceOp = this.sandbox.spy(function() { - return Ember.RSVP.Promise.resolve(null); + return RSVP.Promise.resolve(null); }); let post = this.container.lookup('model:post').create({ id: '1', attributes: {title: 'Wyatt Earp', excerpt: 'Was a gambler.'}, diff --git a/tests/unit/utils/has-one-test.js b/tests/unit/utils/has-one-test.js index 0d2d523..f6d1d1f 100644 --- a/tests/unit/utils/has-one-test.js +++ b/tests/unit/utils/has-one-test.js @@ -1,5 +1,6 @@ import { moduleFor, test } from 'ember-qunit'; import Ember from 'ember'; +import RSVP from 'rsvp'; import { pluralize } from 'ember-inflector'; import { setup, teardown } from 'dummy/tests/helpers/resources'; @@ -7,7 +8,7 @@ let mockServices; const mockService = function () { let sandbox = this.sandbox; return Ember.Service.extend({ - findRelated: sandbox.spy(function () { return Ember.RSVP.Promise.resolve(Ember.Object.create({id: 1})); }), + findRelated: sandbox.spy(function () { return RSVP.Promise.resolve(Ember.Object.create({id: 1})); }), cacheLookup: sandbox.spy(function () { return undefined; }) }); };