diff --git a/addons/api/addon/models/base.js b/addons/api/addon/models/base.js index 2a01e39f5..d883c8846 100644 --- a/addons/api/addon/models/base.js +++ b/addons/api/addon/models/base.js @@ -26,6 +26,7 @@ import { get } from '@ember/object'; * 2) Or as an ID: `record.scopeID`. */ export default class BaseModel extends Model { + // =relationships /** diff --git a/addons/api/addon/models/host-set.js b/addons/api/addon/models/host-set.js index 61033dd79..583971735 100644 --- a/addons/api/addon/models/host-set.js +++ b/addons/api/addon/models/host-set.js @@ -2,6 +2,7 @@ import GeneratedHostSetModel from '../generated/models/host-set'; import { fragmentArray } from 'ember-data-model-fragments/attributes'; export default class HostSetModel extends GeneratedHostSetModel { + // =attributes /** diff --git a/addons/api/addon/models/host.js b/addons/api/addon/models/host.js index 7748e023b..a2e855084 100644 --- a/addons/api/addon/models/host.js +++ b/addons/api/addon/models/host.js @@ -2,9 +2,11 @@ import GeneratedHostModel from '../generated/models/host'; import { fragment } from 'ember-data-model-fragments/attributes'; export default class HostModel extends GeneratedHostModel { + /** * Attributes of this resource, if any, represented as a JSON fragment. * @type {FragmentHostAttributesModel} */ @fragment('fragment-host-attributes', { defaultValue: {} }) attributes; + } diff --git a/addons/api/addon/serializers/account.js b/addons/api/addon/serializers/account.js index 01618a081..5f5291dcd 100644 --- a/addons/api/addon/serializers/account.js +++ b/addons/api/addon/serializers/account.js @@ -1,6 +1,14 @@ import ApplicationSerializer from './application'; export default class AccountSerializer extends ApplicationSerializer { + + // =properties + + /** + * @type {boolean} + */ + serializeScopeID = false; + // =methods /** diff --git a/addons/api/addon/serializers/application.js b/addons/api/addon/serializers/application.js index a41c97730..2819231fa 100644 --- a/addons/api/addon/serializers/application.js +++ b/addons/api/addon/serializers/application.js @@ -7,6 +7,14 @@ import { copy } from 'ember-copy'; * Manages serialization/normalization of data to/from the API. */ export default class ApplicationSerializer extends RESTSerializer { + + // =properties + + /** + * @type {boolean} + */ + serializeScopeID = true; + // =methods /** @@ -71,8 +79,10 @@ export default class ApplicationSerializer extends RESTSerializer { // Delete `scope` field delete serialized.scope; // And serialize `scope_id` - const scope_id = snapshot?.attr('scope')?.attr('scope_id'); - if (scope_id) serialized.scope_id = scope_id; + if(this.serializeScopeID) { + const scope_id = snapshot?.attr('scope')?.attr('scope_id'); + if (scope_id) serialized.scope_id = scope_id; + } return serialized; } diff --git a/addons/api/addon/serializers/host-set.js b/addons/api/addon/serializers/host-set.js index 591da7c76..ee38bd5eb 100644 --- a/addons/api/addon/serializers/host-set.js +++ b/addons/api/addon/serializers/host-set.js @@ -1,6 +1,14 @@ import ApplicationSerializer from './application'; export default class HostSetSerializer extends ApplicationSerializer { + + // =properties + + /** + * @type {boolean} + */ + serializeScopeID = false; + // =methods /** diff --git a/addons/api/addon/serializers/host.js b/addons/api/addon/serializers/host.js new file mode 100644 index 000000000..fad6f2ca7 --- /dev/null +++ b/addons/api/addon/serializers/host.js @@ -0,0 +1,12 @@ +import ApplicationSerializer from './application'; + +export default class HostSerializer extends ApplicationSerializer { + + // =properties + + /** + * @type {boolean} + */ + serializeScopeID = false; + +} diff --git a/addons/api/app/serializers/host.js b/addons/api/app/serializers/host.js new file mode 100644 index 000000000..33844fbaf --- /dev/null +++ b/addons/api/app/serializers/host.js @@ -0,0 +1 @@ +export { default } from 'api/serializers/host'; diff --git a/addons/api/tests/unit/serializers/application-test.js b/addons/api/tests/unit/serializers/application-test.js index 3ab733e52..5c2c07a20 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,6 +49,27 @@ module('Unit | Serializer | application', function (hooks) { }); }); + test('it does not serialize scope_id when serializeScopeID is false', function (assert) { + assert.expect(1); + const store = this.owner.lookup('service:store'); + const serializer = store.serializerFor('user'); + const record = store.createRecord('user', { + name: 'User', + description: 'Description', + scope: { + scope_id: 'global', + type: 'global', + }, + }); + const snapshot = record._createSnapshot(); + serializer.serializeScopeID = false; + const serializedRecord = serializer.serialize(snapshot); + assert.deepEqual(serializedRecord, { + name: 'User', + description: 'Description' + }); + }); + test('it serializes non-nullish version fields', function (assert) { assert.expect(2); const store = this.owner.lookup('service:store'); diff --git a/addons/api/tests/unit/serializers/host-test.js b/addons/api/tests/unit/serializers/host-test.js new file mode 100644 index 000000000..c31a5ce4e --- /dev/null +++ b/addons/api/tests/unit/serializers/host-test.js @@ -0,0 +1,23 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module('Unit | Serializer | host', function(hooks) { + setupTest(hooks); + + // Replace this with your real tests. + test('it exists', function(assert) { + let store = this.owner.lookup('service:store'); + let serializer = store.serializerFor('host'); + + assert.ok(serializer); + }); + + test('it serializes records', function(assert) { + let store = this.owner.lookup('service:store'); + let record = store.createRecord('host', {}); + + let serializedRecord = record.serialize(); + + assert.ok(serializedRecord); + }); +});