Changeset 0.37.14 (#226)
Co-authored-by: gobha <jasafpro@gmail.com> Co-committed-by: gobha <jasafpro@gmail.com>
This commit is contained in:
@@ -78,60 +78,53 @@ describe('Policy evaluation logic', () => {
|
||||
// ── Team member dropdown logic ───────────────
|
||||
|
||||
describe('Team member dropdown population', () => {
|
||||
function getAvailableUsers(usersResp, membersResp) {
|
||||
const users = usersResp.users || usersResp.data || [];
|
||||
const existingIds = new Set((membersResp.data || []).map(m => m.user_id));
|
||||
// admin/users returns {data:[...], total:N} — has siblings, _unwrap passes through.
|
||||
// teams/members returns {data:[...]} — sole key, _unwrap strips to bare array.
|
||||
function getAvailableUsers(usersResp, membersArr) {
|
||||
const users = usersResp.data || [];
|
||||
const existingIds = new Set((membersArr || []).map(m => m.user_id));
|
||||
return users.filter(u => u.is_active && !existingIds.has(u.id));
|
||||
}
|
||||
|
||||
it('extracts users from {users:[]} response', () => {
|
||||
const usersResp = { users: [
|
||||
it('extracts users from {data:[...], total:N} response', () => {
|
||||
const usersResp = { data: [
|
||||
{ id: 'u1', username: 'alice', is_active: true },
|
||||
{ id: 'u2', username: 'bob', is_active: true },
|
||||
]};
|
||||
const membersResp = { data: [] };
|
||||
const available = getAvailableUsers(usersResp, membersResp);
|
||||
], total: 2};
|
||||
const membersArr = [];
|
||||
const available = getAvailableUsers(usersResp, membersArr);
|
||||
assert.equal(available.length, 2);
|
||||
});
|
||||
|
||||
it('falls back to {data:[]} response (backward compat)', () => {
|
||||
it('excludes existing team members', () => {
|
||||
const usersResp = { data: [
|
||||
{ id: 'u1', username: 'alice', is_active: true },
|
||||
]};
|
||||
const membersResp = { data: [] };
|
||||
const available = getAvailableUsers(usersResp, membersResp);
|
||||
assert.equal(available.length, 1);
|
||||
});
|
||||
|
||||
it('excludes existing team members', () => {
|
||||
const usersResp = { users: [
|
||||
{ id: 'u1', username: 'alice', is_active: true },
|
||||
{ id: 'u2', username: 'bob', is_active: true },
|
||||
]};
|
||||
const membersResp = { data: [{ user_id: 'u1', role: 'admin' }] };
|
||||
const available = getAvailableUsers(usersResp, membersResp);
|
||||
], total: 2};
|
||||
const membersArr = [{ user_id: 'u1', role: 'admin' }];
|
||||
const available = getAvailableUsers(usersResp, membersArr);
|
||||
assert.equal(available.length, 1);
|
||||
assert.equal(available[0].id, 'u2');
|
||||
});
|
||||
|
||||
it('excludes inactive users', () => {
|
||||
const usersResp = { users: [
|
||||
const usersResp = { data: [
|
||||
{ id: 'u1', username: 'alice', is_active: true },
|
||||
{ id: 'u2', username: 'disabled', is_active: false },
|
||||
]};
|
||||
const membersResp = { data: [] };
|
||||
const available = getAvailableUsers(usersResp, membersResp);
|
||||
], total: 2};
|
||||
const membersArr = [];
|
||||
const available = getAvailableUsers(usersResp, membersArr);
|
||||
assert.equal(available.length, 1);
|
||||
assert.equal(available[0].id, 'u1');
|
||||
});
|
||||
|
||||
it('returns empty for empty users response', () => {
|
||||
const available = getAvailableUsers({ users: [] }, { data: [] });
|
||||
const available = getAvailableUsers({ data: [] }, []);
|
||||
assert.equal(available.length, 0);
|
||||
});
|
||||
|
||||
it('handles completely missing response fields', () => {
|
||||
const available = getAvailableUsers({}, {});
|
||||
const available = getAvailableUsers({}, []);
|
||||
assert.equal(available.length, 0);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user