fix: Do not serialize scope_id for nested resources
Nested resources currently are accounts, host-sets, and hosts.
This commit is contained in:
5 files changed
+43
-3
No files matched your search
@@ -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
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
/**
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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');
|
||||
|
||||
Reference in new issue
Block a user