fix task.challenge tests and add checks when scoring challenge tasks

This commit is contained in:
Matteo Pagliazzi 2016-05-25 14:49:08 +02:00
parent 506705d738
commit f713bf53c1
3 changed files with 5 additions and 3 deletions

View file

@ -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({});
});
});
});

View file

@ -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);

View file

@ -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);