diff --git a/addons/api/addon/models/group.js b/addons/api/addon/models/group.js index 0a06fd404..8489fcd68 100644 --- a/addons/api/addon/models/group.js +++ b/addons/api/addon/models/group.js @@ -1,6 +1,7 @@ import GeneratedGroupModel from '../generated/models/group'; import { attr } from '@ember-data/model'; import { computed } from '@ember/object'; +import { A } from '@ember/array'; export default class GroupModel extends GeneratedGroupModel { @@ -10,13 +11,14 @@ 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}) member_ids; + @attr({readOnly: true, defaultValue: () => A()}) member_ids; /** * An array of resolved user instances. * Unresolvable instances are excluded from the array. * @type {[UserModel]} */ + // TODO: Use fragments array to read cross scope members. @computed('member_ids.[]') get members() { return this.member_ids diff --git a/addons/api/tests/unit/models/group-test.js b/addons/api/tests/unit/models/group-test.js index 75216bf6f..0c52ba369 100644 --- a/addons/api/tests/unit/models/group-test.js +++ b/addons/api/tests/unit/models/group-test.js @@ -130,4 +130,17 @@ module('Unit | Model | group', function(hooks) { const model = store.peekRecord('group', '123abc'); await model.removeMember('3'); }); + + test('it defaults `members_ids` to an empty array when model instance does not define it', function(assert) { + assert.expect(1); + const store = this.owner.lookup('service:store'); + store.push({ + data: { + id: 'group_123', + type: 'group' + } + }); + const group = store.peekRecord('group', 'group_123'); + assert.equal(group.member_ids.length, 0, 'Group has empty member_ids by default'); + }); }); diff --git a/ui/core/app/components/form/group/add-members/index.hbs b/ui/core/app/components/form/group/add-members/index.hbs index fef2f383c..30f9308c6 100644 --- a/ui/core/app/components/form/group/add-members/index.hbs +++ b/ui/core/app/components/form/group/add-members/index.hbs @@ -9,7 +9,7 @@ > diff --git a/ui/core/app/routes/scopes/scope/groups/group.js b/ui/core/app/routes/scopes/scope/groups/group.js index bd638b343..b39abc4b8 100644 --- a/ui/core/app/routes/scopes/scope/groups/group.js +++ b/ui/core/app/routes/scopes/scope/groups/group.js @@ -13,6 +13,7 @@ export default class ScopesScopeGroupsGroupRoute extends Route { model({ group_id }) { const { id: scopeID } = this.modelFor('scopes.scope'); return this.store.findRecord('group', group_id, { + reload: true, adapterOptions: { scopeID }, }); }