fix: Do not serialize scope_id for nested resources

Nested resources currently are accounts, host-sets, and hosts.
This commit is contained in:
Susmitha Girumala committed 2020-09-21 14:42:19 -04:00
1 parent 8786cbfbed
commit fe2232b320
5 files changed
+43 -3

No files matched your search

+7
View File
@@ -4,6 +4,13 @@ import { computed } from '@ember/object';
export default class AccountModel extends GeneratedAccountModel {
// =properties
/**
* Account resource is nested within auth methods.
*/
nestedResource = true;
// =attributes
/**
+8
View File
@@ -2,6 +2,14 @@ import GeneratedHostSetModel from '../generated/models/host-set';
import { fragmentArray } from 'ember-data-model-fragments/attributes';
export default class HostSetModel extends GeneratedHostSetModel {
// =properties
/**
* Account resource is nested within auth methods.
*/
nestedResource = true;
// =attributes
/**
+8
View File
@@ -2,6 +2,14 @@ import GeneratedHostModel from '../generated/models/host';
import { fragment } from 'ember-data-model-fragments/attributes';
export default class HostModel extends GeneratedHostModel {
// =properties
/**
* Account resource is nested within auth methods.
*/
nestedResource = true;
/**
* Attributes of this resource, if any, represented as a JSON fragment.
* @type {FragmentHostAttributesModel}
+5 -3
View File
@@ -70,9 +70,11 @@ export default class ApplicationSerializer extends RESTSerializer {
const serialized = super.serialize(...arguments);
// 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;
// And serialize `scope_id` when not a nested resource
if(!snapshot?.record?.nestedResource) {
const scope_id = snapshot?.attr('scope')?.attr('scope_id');
if (scope_id) serialized.scope_id = scope_id;
}
return serialized;
}
@@ -49,6 +49,21 @@ module('Unit | Serializer | application', function (hooks) {
});
});
test('it does not serialize scope_id when resource is nested', function (assert) {
assert.expect(1);
const store = this.owner.lookup('service:store');
const record = store.createRecord('account', {
name: 'Account',
description: 'Description',
scope: {
scope_id: 'global',
type: 'global',
},
});
const serializedRecord = record.serialize();
assert.notOk(serializedRecord.scope_id);
});
test('it serializes non-nullish version fields', function (assert) {
assert.expect(2);
const store = this.owner.lookup('service:store');