From 8a5130932bb38f2e396fdae36baf9a885164bd00 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Tue, 8 Sep 2020 16:09:20 -0400 Subject: [PATCH 1/2] fix: Default group.member_ids to an empty array --- addons/api/addon/models/group.js | 4 +++- addons/api/tests/unit/models/group-test.js | 13 +++++++++++++ .../app/components/form/group/add-members/index.hbs | 2 +- 3 files changed, 17 insertions(+), 2 deletions(-) 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 @@ > From 11619db4c4da878d3db4f62188b2a2df7c43f714 Mon Sep 17 00:00:00 2001 From: Susmitha Girumala Date: Tue, 8 Sep 2020 16:22:46 -0400 Subject: [PATCH 2/2] fix: Reload group to load member attributes --- ui/core/app/routes/scopes/scope/groups/group.js | 1 + 1 file changed, 1 insertion(+) 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 }, }); }