Merge pull request #160 from hashicorp/ICU-549-fix-group-members-view

Reload a group to retrieve it's members
This commit is contained in:
Randall Morey authored and GitHub committed 2020-09-08 16:35:32 -04:00
commit e535c40c5e
4 files changed
+18 -2

No files matched your search

+3 -1
View File
@@ -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
@@ -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');
});
});
@@ -9,7 +9,7 @@
>
<form.actions
@submitText={{t "actions.add-host-sets"}}
@submitText={{t "actions.add-members"}}
@cancelText={{t "actions.cancel"}} />
<Rose::Table as |table|>
@@ -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 },
});
}