From 87923b7f0d2eca99bf30d3b0a64c83a5f59fdd7e Mon Sep 17 00:00:00 2001 From: Mira-M Date: Sat, 26 Jan 2019 12:44:48 -0500 Subject: [PATCH] Add username to challenge csv export (#10956) - Adds the member's username to the challenge csv - Updates to unit tests - Issue #10955 Supports the ability for challenge owners to judge challenge winners after the added functionality enabling users to modify their name (display name). The added field ties the user to their results by their username. --- ...T-challenges_challengeId_export_csv.test.js | 18 +++++++++--------- .../server/controllers/api-v3/challenges.js | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js b/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js index b9bf69b1c6..03702d5063 100644 --- a/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js +++ b/test/api/v3/integration/challenges/GET-challenges_challengeId_export_csv.test.js @@ -65,11 +65,11 @@ describe('GET /challenges/:challengeId/export/csv', () => { const sortedMembers = _.sortBy([members[0], members[1], members[2], groupLeader], '_id'); const splitRes = res.split('\n'); - expect(splitRes[0]).to.equal('UUID,name,Task,Value,Notes,Streak,Task,Value,Notes,Streak'); - expect(splitRes[1]).to.equal(`${sortedMembers[0]._id},${sortedMembers[0].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`); - expect(splitRes[2]).to.equal(`${sortedMembers[1]._id},${sortedMembers[1].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`); - expect(splitRes[3]).to.equal(`${sortedMembers[2]._id},${sortedMembers[2].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`); - expect(splitRes[4]).to.equal(`${sortedMembers[3]._id},${sortedMembers[3].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`); + expect(splitRes[0]).to.equal('UUID,Display Name,Username,Task,Value,Notes,Streak,Task,Value,Notes,Streak'); + expect(splitRes[1]).to.equal(`${sortedMembers[0]._id},${sortedMembers[0].profile.name},${sortedMembers[0].auth.local.username},habit:Task 1,0,,0,todo:Task 2,0,,0`); + expect(splitRes[2]).to.equal(`${sortedMembers[1]._id},${sortedMembers[1].profile.name},${sortedMembers[1].auth.local.username},habit:Task 1,0,,0,todo:Task 2,0,,0`); + expect(splitRes[3]).to.equal(`${sortedMembers[2]._id},${sortedMembers[2].profile.name},${sortedMembers[2].auth.local.username},habit:Task 1,0,,0,todo:Task 2,0,,0`); + expect(splitRes[4]).to.equal(`${sortedMembers[3]._id},${sortedMembers[3].profile.name},${sortedMembers[3].auth.local.username},habit:Task 1,0,,0,todo:Task 2,0,,0`); expect(splitRes[5]).to.equal(''); }); @@ -78,10 +78,10 @@ describe('GET /challenges/:challengeId/export/csv', () => { const res = await members[1].get(`/challenges/${challenge._id}/export/csv`); const sortedMembers = _.sortBy([members[1], members[2], groupLeader], '_id'); const splitRes = res.split('\n'); - expect(splitRes[0]).to.equal('UUID,name,Task,Value,Notes,Streak,Task,Value,Notes,Streak'); - expect(splitRes[1]).to.equal(`${sortedMembers[0]._id},${sortedMembers[0].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`); - expect(splitRes[2]).to.equal(`${sortedMembers[1]._id},${sortedMembers[1].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`); - expect(splitRes[3]).to.equal(`${sortedMembers[2]._id},${sortedMembers[2].profile.name},habit:Task 1,0,,0,todo:Task 2,0,,0`); + expect(splitRes[0]).to.equal('UUID,Display Name,Username,Task,Value,Notes,Streak,Task,Value,Notes,Streak'); + expect(splitRes[1]).to.equal(`${sortedMembers[0]._id},${sortedMembers[0].profile.name},${sortedMembers[0].auth.local.username},habit:Task 1,0,,0,todo:Task 2,0,,0`); + expect(splitRes[2]).to.equal(`${sortedMembers[1]._id},${sortedMembers[1].profile.name},${sortedMembers[1].auth.local.username},habit:Task 1,0,,0,todo:Task 2,0,,0`); + expect(splitRes[3]).to.equal(`${sortedMembers[2]._id},${sortedMembers[2].profile.name},${sortedMembers[2].auth.local.username},habit:Task 1,0,,0,todo:Task 2,0,,0`); expect(splitRes[4]).to.equal(''); }); }); diff --git a/website/server/controllers/api-v3/challenges.js b/website/server/controllers/api-v3/challenges.js index 6405eb59ad..37f9cac929 100644 --- a/website/server/controllers/api-v3/challenges.js +++ b/website/server/controllers/api-v3/challenges.js @@ -577,7 +577,7 @@ api.exportChallengeCsv = { .lean().exec(), ]); - let resArray = members.map(member => [member._id, member.profile.name]); + let resArray = members.map(member => [member._id, member.profile.name, member.auth.local.username]); let lastUserId; let index = -1; @@ -606,7 +606,7 @@ api.exportChallengeCsv = { let challengeTasks = _.reduce(challenge.tasksOrder.toObject(), (result, array) => { return result.concat(array); }, []).sort(); - resArray.unshift(['UUID', 'name']); + resArray.unshift(['UUID', 'Display Name', 'Username']); _.times(challengeTasks.length, () => resArray[0].push('Task', 'Value', 'Notes', 'Streak'));