Fix lostMasterclasser achievement issue (#10616)

This commit is contained in:
Rene Cordier
2018-08-25 03:23:43 +07:00
committed by Sabe Jones
parent bc9401b2f7
commit 5c4f763bb1
2 changed files with 20 additions and 21 deletions
+2 -4
View File
@@ -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;
+18 -17
View File
@@ -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) {