From f713bf53c15951c00ca9eb62de60d8103203f20d Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 25 May 2016 14:49:08 +0200 Subject: [PATCH] fix task.challenge tests and add checks when scoring challenge tasks --- .../challenges/POST-challenges_challengeId_leave.test.js | 2 +- test/api/v3/integration/tasks/PUT-tasks_id.test.js | 2 +- website/server/controllers/api-v3/tasks.js | 4 +++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js b/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js index 9694b263a9..0502be654c 100644 --- a/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js +++ b/test/api/v3/integration/challenges/POST-challenges_challengeId_leave.test.js @@ -117,7 +117,7 @@ describe('POST /challenges/:challengeId/leave', () => { }); expect(testTask).to.not.be.undefined; - expect(testTask.challenge).to.be.undefined; + expect(testTask.challenge).to.eql({}); }); }); }); diff --git a/test/api/v3/integration/tasks/PUT-tasks_id.test.js b/test/api/v3/integration/tasks/PUT-tasks_id.test.js index 1325f8b392..566c1ebe5e 100644 --- a/test/api/v3/integration/tasks/PUT-tasks_id.test.js +++ b/test/api/v3/integration/tasks/PUT-tasks_id.test.js @@ -45,7 +45,7 @@ describe('PUT /tasks/:id', () => { expect(savedTask.history).to.eql(task.history); expect(savedTask.createdAt).to.equal(task.createdAt); expect(savedTask.updatedAt).to.be.greaterThan(task.updatedAt); - expect(savedTask.challenge).to.equal(task.challenge); + expect(savedTask.challenge).to.eql(task.challenge); expect(savedTask.completed).to.eql(task.completed); expect(savedTask.streak).to.equal(savedTask.streak); // it's an habit, dailies can change it expect(savedTask.dateCompleted).to.equal(task.dateCompleted); diff --git a/website/server/controllers/api-v3/tasks.js b/website/server/controllers/api-v3/tasks.js index 092aed83ba..9bf4ffe634 100644 --- a/website/server/controllers/api-v3/tasks.js +++ b/website/server/controllers/api-v3/tasks.js @@ -422,13 +422,15 @@ api.scoreTask = { sendTaskWebhook(user.preferences.webhooks, _generateWebhookTaskData(task, direction, delta, userStats, user)); - if (task.challenge.id && task.challenge.taskId && !task.challenge.broken && task.type !== 'reward') { + if (task.challenge && task.challenge.id && task.challenge.taskId && !task.challenge.broken && task.type !== 'reward') { // Wrapping everything in a try/catch block because if an error occurs using `await` it MUST NOT bubble up because the request has already been handled try { let chalTask = await Tasks.Task.findOne({ _id: task.challenge.taskId, }).exec(); + if (!chalTask) return; + await chalTask.scoreChallengeTask(delta); } catch (e) { logger.error(e);