diff --git a/src/controllers/groups.js b/src/controllers/groups.js index d4776df02d..254d8e7b2f 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -500,7 +500,12 @@ questStart = function(req, res) { if (m == group.quest.leader) updates['$inc']['items.quests.'+key] = -1; if (group.quest.members[m] == true) { - updates['$set']['party.quest'] = Group.cleanQuestProgress({key:key,progress:{collect:collected}}); + // See https://github.com/HabitRPG/habitrpg/issues/2168#issuecomment-31556322 , we need to *not* reset party.quest.progress.up + //updates['$set']['party.quest'] = Group.cleanQuestProgress({key:key,progress:{collect:collected}}); + updates['$set']['party.quest.key'] = key + updates['$set']['party.quest.progress.down'] = 0; + updates['$set']['party.quest.progress.collect'] = collected; + updates['$set']['party.quest.completed'] = null; questMembers[m] = true; } else { updates['$set']['party.quest'] = Group.cleanQuestProgress(); diff --git a/test/api.mocha.js b/test/api.mocha.js index 31d3b12fd5..7295a91b06 100644 --- a/test/api.mocha.js +++ b/test/api.mocha.js @@ -280,6 +280,19 @@ describe('API', function () { participating = [], notParticipating = []; + it("Tallies progress",function(done){ + request.post(baseURL+'/user/batch-update') + .send([ + {op:'score',params:{direction:'up',id:user.dailys[0].id}}, + {op:'score',params:{direction:'up',id:user.dailys[1].id}} + ]) + .end(function(res){ + user = res.body; + expect(user.party.quest.progress.up).to.be.above(0); + done(); + }) + }); + it('Invites some members', function (done) { async.waterfall([ @@ -363,6 +376,25 @@ describe('API', function () { }], done); }); + it('Hurts the boss',function(done){ + request.post(baseURL+'/user/batch-update') + .end(function(res){ + user = res.body; + var up = user.party.quest.progress.up; + expect(up).to.be.above(0); + request.post(baseURL+'/user/batch-update') + .send([ + {op:'score',params:{direction:'up',id:user.dailys[2].id}}, + {op:'score',params:{direction:'up',id:user.dailys[3].id}} + ]) + .end(function(res){ + expect(res.body.party.quest.progress.up).to.be.above(up) + user + }) + + }) + }) + it("Doesn't include people who aren't participating"); });