prevent "Zero-day streak" giving a 21-day streak achievement + tests - fixes #2578 (#9688)

* prevent "Zero-day streak" giving a 21-day streak achievement - fixes #2578

* add tests for streak achievements

* remove .only from set of tests

* refactor(test): fix linting
This commit is contained in:
Alys
2018-01-30 07:43:59 +10:00
committed by Sabe Jones
parent 5d4e1362bb
commit 47c2a3a21a
2 changed files with 60 additions and 9 deletions

View File

@@ -238,14 +238,14 @@ module.exports = function scoreTask (options = {}, req = {}) {
if (direction === 'up') {
task.streak += 1;
// Give a streak achievement when the streak is a multiple of 21
if (task.streak % 21 === 0) {
if (task.streak !== 0 && task.streak % 21 === 0) {
user.achievements.streak = user.achievements.streak ? user.achievements.streak + 1 : 1;
if (user.addNotification) user.addNotification('STREAK_ACHIEVEMENT');
}
task.completed = true;
} else if (direction === 'down') {
// Remove a streak achievement if streak was a multiple of 21 and the daily was undone
if (task.streak % 21 === 0) user.achievements.streak = user.achievements.streak ? user.achievements.streak - 1 : 0;
if (task.streak !== 0 && task.streak % 21 === 0) user.achievements.streak = user.achievements.streak ? user.achievements.streak - 1 : 0;
task.streak -= 1;
task.completed = false;
}