From c52064b3df02fd5308c9af2cf3ba75afe5c52ac8 Mon Sep 17 00:00:00 2001 From: Kristian Tashkov Date: Thu, 28 Jan 2016 22:01:39 +0200 Subject: [PATCH] Add challenge select winner test for broken and winner flags of challenge tasks --- ...lenges_challengeId_winner_winnerId.test.js | 27 ++++++++++++++++++- website/src/controllers/api-v3/challenges.js | 2 +- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js b/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js index c079086777..98dfc20926 100644 --- a/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js +++ b/test/api/v3/integration/challenges/POST-challenges_challengeId_winner_winnerId.test.js @@ -44,6 +44,7 @@ describe('POST /challenges/:challengeId/winner/:winnerId', () => { let group; let challenge; let winningUser; + let taskText = 'A challenge task text'; beforeEach(async () => { let populatedGroup = await createAndPopulateGroup({ @@ -59,7 +60,7 @@ describe('POST /challenges/:challengeId/winner/:winnerId', () => { }); await groupLeader.post(`/tasks/challenge/${challenge._id}`, [ - {type: 'habit', text: 'A challenge task text'}, + {type: 'habit', text: taskText}, ]); await winningUser.post(`/challenges/${challenge._id}/join`); @@ -110,5 +111,29 @@ describe('POST /challenges/:challengeId/winner/:winnerId', () => { await expect(winningUser.sync()).to.eventually.have.property('balance', oldBalance + challenge.prize / 4); }); + + it('doesn\'t refund gems to group leader', async () => { + let oldBalance = (await groupLeader.sync()).balance; + + await groupLeader.post(`/challenges/${challenge._id}/selectWinner/${winningUser._id}`); + + await sleep(0.5); + + await expect(groupLeader.sync()).to.eventually.have.property('balance', oldBalance); + }); + + it('sets broken and winner flags for user\'s challenge tasks', async () => { + await groupLeader.post(`/challenges/${challenge._id}/selectWinner/${winningUser._id}`); + + await sleep(0.5); + + let tasks = await winningUser.get('/tasks/user'); + let testTask = _.find(tasks, (task) => { + return task.text === taskText; + }); + + expect(testTask.challenge.broken).to.eql('CHALLENGE_CLOSED'); + expect(testTask.challenge.winner).to.eql(winningUser.profile.name); + }); }); }); diff --git a/website/src/controllers/api-v3/challenges.js b/website/src/controllers/api-v3/challenges.js index 3c14fc69aa..fb91ed4079 100644 --- a/website/src/controllers/api-v3/challenges.js +++ b/website/src/controllers/api-v3/challenges.js @@ -467,7 +467,7 @@ api.selectChallengeWinner = { res.respond(200, {}); // Close channel in background - _closeChal(challenge, {broken: 'CHALLENGE_DELETED', winner}); + _closeChal(challenge, {broken: 'CHALLENGE_CLOSED', winner}); }, };