diff --git a/src/model/users.ts b/src/model/users.ts index eed2dda..7a1a8ff 100644 --- a/src/model/users.ts +++ b/src/model/users.ts @@ -500,10 +500,8 @@ export default class Users { tr: Transaction, userIdx: number, ): Promise> { - const query = 'SELECT sn.student_number FROM users u ' - + 'LEFT OUTER JOIN student_numbers AS sn ON sn.owner_idx = u.idx ' - + 'WHERE u.idx = $1'; - const result = await tr.query<{ idx: number; student_number: string }>(query, [userIdx]); + const query = 'SELECT student_number FROM student_numbers WHERE owner_idx = $1'; + const result = await tr.query<{ student_number: string }>(query, [userIdx]); return result.rows.map(row => row.student_number); } @@ -511,9 +509,8 @@ export default class Users { tr: Transaction, userIndices: Array, ): Promise>> { - const query = 'SELECT u.idx, sn.student_number FROM users u ' - + 'LEFT OUTER JOIN student_numbers AS sn ON sn.owner_idx = u.idx ' - + 'WHERE u.idx = ANY($1)'; + const query = 'SELECT owner_idx as idx, student_number FROM student_numbers ' + + 'WHERE owner_idx = ANY($1)'; const result = await tr.query<{ idx: number; student_number: string }>(query, [userIndices]); const map = new Map>(); for (const row of result.rows) { diff --git a/test/api/groups.test.ts b/test/api/groups.test.ts index 5496ff4..442b602 100644 --- a/test/api/groups.test.ts +++ b/test/api/groups.test.ts @@ -109,7 +109,6 @@ test('member listing', async t => { let memberUserIdx = 0; await model.pgDo(async tr => { memberUserIdx = await createUser(tr, model); - await model.users.addStudentNumber(tr, memberUserIdx, uuid()); await model.users.addUserMembership(tr, memberUserIdx, groupIdx); }, ['users']); @@ -117,6 +116,16 @@ test('member listing', async t => { t.is(response.status, 200); t.is(response.body.length, 1); t.is(response.body[0].uid, memberUserIdx); + t.deepEqual(response.body[0].studentNumbers, []); + + const studentNumber = uuid(); + await model.pgDo(tr => model.users.addStudentNumber(tr, memberUserIdx, studentNumber), ['users']); + + response = await agent.get(`/api/group/${groupIdx}/members`); + t.is(response.status, 200); + t.is(response.body.length, 1); + t.is(response.body[0].uid, memberUserIdx); + t.deepEqual(response.body[0].studentNumbers, [studentNumber]); }); test('pending listing', async t => { @@ -157,7 +166,6 @@ test('pending listing', async t => { let pendingUserIdx = 0; await model.pgDo(async tr => { pendingUserIdx = await createUser(tr, model); - await model.users.addStudentNumber(tr, pendingUserIdx, uuid()); await model.users.addPendingUserMembership(tr, pendingUserIdx, groupIdx); }, ['users']); @@ -165,6 +173,18 @@ test('pending listing', async t => { t.is(response.status, 200); t.is(response.body.length, 1); t.is(response.body[0].uid, pendingUserIdx); + t.deepEqual(response.body[0].studentNumbers, []); + + const studentNumber = uuid(); + await model.pgDo(tr => model.users.addStudentNumber(tr, pendingUserIdx, studentNumber), [ + 'users', + ]); + + response = await agent.get(`/api/group/${groupIdx}/pending`); + t.is(response.status, 200); + t.is(response.body.length, 1); + t.is(response.body[0].uid, pendingUserIdx); + t.deepEqual(response.body[0].studentNumbers, [studentNumber]); }); test('apply to group', async t => {