diff --git a/addons/api/addon/models/group.js b/addons/api/addon/models/group.js index 8489fcd68..6b0da1b1a 100644 --- a/addons/api/addon/models/group.js +++ b/addons/api/addon/models/group.js @@ -11,7 +11,11 @@ export default class GroupModel extends GeneratedGroupModel { * Members is read-only under normal circumstances. But members can * be persisted via calls to `addMembers()` or `removeMembers()`. */ - @attr({readOnly: true, defaultValue: () => A()}) member_ids; + @attr({ + readOnly: true, + defaultValue: () => A(), + emptyArrayIfMissing: true + }) member_ids; /** * An array of resolved user instances. diff --git a/addons/api/tests/unit/serializers/group-test.js b/addons/api/tests/unit/serializers/group-test.js index 2a7da2b06..8c80a1b50 100644 --- a/addons/api/tests/unit/serializers/group-test.js +++ b/addons/api/tests/unit/serializers/group-test.js @@ -45,4 +45,34 @@ module('Unit | Serializer | group', function(hooks) { }); }); + test('it normalizes missing member_ids to empty array', function (assert) { + assert.expect(1); + const store = this.owner.lookup('service:store'); + const serializer = store.serializerFor('group'); + const group = store.createRecord('group').constructor; + const payload = { + id: '1', + name: 'Group 1', + scope: { id: 'o_123' } + }; + const normalized = serializer.normalizeSingleResponse( + store, + group, + payload + ); + assert.deepEqual(normalized, { + included: [], + data: { + id: '1', + type: 'group', + attributes: { + name: 'Group 1', + scope: { scope_id: 'o_123' }, + member_ids: [] + }, + relationships: {}, + }, + }); + }); + }); diff --git a/ui/core/mirage/serializers/group.js b/ui/core/mirage/serializers/group.js index 2854224f8..1ea1605f7 100644 --- a/ui/core/mirage/serializers/group.js +++ b/ui/core/mirage/serializers/group.js @@ -12,7 +12,7 @@ export default ApplicationSerializer.extend({ _hashForModel(model) { const json = ApplicationSerializer.prototype._hashForModel.apply(this, arguments); - json.member_ids = model.memberIds; + if (model.memberIds.length) json.member_ids = model.memberIds; return json; }