diff --git a/test/api/unit/models/group.test.js b/test/api/unit/models/group.test.js index 3b5a053725..93c20125ac 100644 --- a/test/api/unit/models/group.test.js +++ b/test/api/unit/models/group.test.js @@ -1405,8 +1405,7 @@ describe('Group Model', () => { expect(updatedParticipatingMember.achievements.quests[quest.key]).to.eql(1); }); - // Disable test, it fails on TravisCI, but only there - xit('gives out super awesome Masterclasser achievement to the deserving', async () => { + it('gives out super awesome Masterclasser achievement to the deserving', async () => { quest = questScrolls.lostMasterclasser4; party.quest.key = quest.key; @@ -1442,8 +1441,7 @@ describe('Group Model', () => { expect(updatedParticipatingMember.achievements.lostMasterclasser).to.not.eql(true); }); - // Disable test, it fails on TravisCI, but only there - xit('gives out super awesome Masterclasser achievement when quests done out of order', async () => { + it('gives out super awesome Masterclasser achievement when quests done out of order', async () => { quest = questScrolls.lostMasterclasser1; party.quest.key = quest.key; diff --git a/website/server/models/group.js b/website/server/models/group.js index f1612af3e8..5544bc77f0 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -913,22 +913,6 @@ schema.methods.finishQuest = async function finishQuest (quest) { 'lostMasterclasser4', ]; - if (masterClasserQuests.includes(questK)) { - let lostMasterclasserQuery = { - 'achievements.lostMasterclasser': {$ne: true}, - }; - masterClasserQuests.forEach(questName => { - lostMasterclasserQuery[`achievements.quests.${questName}`] = {$gt: 0}; - }); - let lostMasterclasserUpdate = { - $set: {'achievements.lostMasterclasser': true}, - }; - - promises = promises.concat(participants.map(userId => { - return _updateUserWithRetries(userId, lostMasterclasserUpdate, null, lostMasterclasserQuery); - })); - } - // Send webhooks in background // @TODO move the find users part to a worker as well, not just the http request User.find({ @@ -954,7 +938,24 @@ schema.methods.finishQuest = async function finishQuest (quest) { }); }); - return await Promise.all(promises); + await Promise.all(promises); + + if (masterClasserQuests.includes(questK)) { + let lostMasterclasserQuery = { + 'achievements.lostMasterclasser': {$ne: true}, + }; + masterClasserQuests.forEach(questName => { + lostMasterclasserQuery[`achievements.quests.${questName}`] = {$gt: 0}; + }); + let lostMasterclasserUpdate = { + $set: {'achievements.lostMasterclasser': true}, + }; + + let lostMasterClasserPromises = participants.map(userId => { + return _updateUserWithRetries(userId, lostMasterclasserUpdate, null, lostMasterclasserQuery); + }); + await Promise.all(lostMasterClasserPromises); + } }; function _isOnQuest (user, progress, group) {