diff --git a/addons/api/addon/models/account.js b/addons/api/addon/models/account.js index ff6b9d583..77d631bca 100644 --- a/addons/api/addon/models/account.js +++ b/addons/api/addon/models/account.js @@ -7,9 +7,9 @@ export default class AccountModel extends GeneratedAccountModel { // =properties /** - * Account resource is nested within auth methods. + * @type {boolean} */ - nestedResource = true; + serializeScopeID = false; // =attributes diff --git a/addons/api/addon/models/base.js b/addons/api/addon/models/base.js index 2a01e39f5..f79834fe5 100644 --- a/addons/api/addon/models/base.js +++ b/addons/api/addon/models/base.js @@ -26,6 +26,14 @@ import { get } from '@ember/object'; * 2) Or as an ID: `record.scopeID`. */ export default class BaseModel extends Model { + + // =properties + + /** + * @type {boolean} + */ + serializeScopeID = true; + // =relationships /** diff --git a/addons/api/addon/models/host-set.js b/addons/api/addon/models/host-set.js index 6b4587ce6..fce605ebb 100644 --- a/addons/api/addon/models/host-set.js +++ b/addons/api/addon/models/host-set.js @@ -6,9 +6,9 @@ export default class HostSetModel extends GeneratedHostSetModel { // =properties /** - * Account resource is nested within auth methods. + * @type {boolean} */ - nestedResource = true; + serializeScopeID = false; // =attributes diff --git a/addons/api/addon/models/host.js b/addons/api/addon/models/host.js index 2b6957dc2..6790b482c 100644 --- a/addons/api/addon/models/host.js +++ b/addons/api/addon/models/host.js @@ -6,9 +6,9 @@ export default class HostModel extends GeneratedHostModel { // =properties /** - * Account resource is nested within auth methods. + * @type {boolean} */ - nestedResource = true; + serializeScopeID = false; /** * Attributes of this resource, if any, represented as a JSON fragment. diff --git a/addons/api/addon/serializers/application.js b/addons/api/addon/serializers/application.js index cdbd2b56d..5473a05bc 100644 --- a/addons/api/addon/serializers/application.js +++ b/addons/api/addon/serializers/application.js @@ -70,8 +70,8 @@ export default class ApplicationSerializer extends RESTSerializer { const serialized = super.serialize(...arguments); // Delete `scope` field delete serialized.scope; - // And serialize `scope_id` when not a nested resource - if(!snapshot?.record?.nestedResource) { + // And serialize `scope_id` + if(snapshot?.record?.serializeScopeID) { const scope_id = snapshot?.attr('scope')?.attr('scope_id'); if (scope_id) serialized.scope_id = scope_id; } diff --git a/addons/api/tests/unit/serializers/application-test.js b/addons/api/tests/unit/serializers/application-test.js index 85702eac4..1089e3b74 100644 --- a/addons/api/tests/unit/serializers/application-test.js +++ b/addons/api/tests/unit/serializers/application-test.js @@ -30,7 +30,7 @@ module('Unit | Serializer | application', function (hooks) { }); }); - test('it serializes scope_id when scope is set', function (assert) { + test('it serializes scope_id', function (assert) { assert.expect(1); const store = this.owner.lookup('service:store'); const record = store.createRecord('user', { @@ -49,19 +49,25 @@ module('Unit | Serializer | application', function (hooks) { }); }); - test('it does not serialize scope_id when resource is nested', function (assert) { + test('it does not serialize scope_id when serializeScopeID is false', function (assert) { assert.expect(1); const store = this.owner.lookup('service:store'); - const record = store.createRecord('account', { - name: 'Account', + const serializer = store.serializerFor('user'); + const record = store.createRecord('user', { + name: 'User', description: 'Description', scope: { scope_id: 'global', type: 'global', }, }); - const serializedRecord = record.serialize(); - assert.notOk(serializedRecord.scope_id); + const snapshot = record._createSnapshot(); + snapshot.record.serializeScopeID = false; + const serializedRecord = serializer.serialize(snapshot); + assert.deepEqual(serializedRecord, { + name: 'User', + description: 'Description' + }); }); test('it serializes non-nullish version fields', function (assert) {