From a326072858a19a3dcfadd661433f4e3b3d0f2425 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Sun, 5 Jan 2014 15:04:19 -0700 Subject: [PATCH] start adding quests tests --- src/controllers/groups.js | 1 + test/api.mocha.coffee | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/controllers/groups.js b/src/controllers/groups.js index a5be75a595..c100d16374 100644 --- a/src/controllers/groups.js +++ b/src/controllers/groups.js @@ -477,6 +477,7 @@ api.questAccept = function(req, res) { if (key) { if (!shared.content.quests[key]) return res.json(404,{err:'Quest ' + key + ' not found'}); if (group.quest.key) return res.json(400, {err: 'Party already on a quest (and only have one quest at a time)'}); + if (!user.items.quests[key]) return res.json(401, {err: "You don't own that quest scroll"}); group.quest.key = key; group.quest.members = {}; // Invite everyone. true means "accepted", false="rejected", undefined="pending". Once we click "start quest" diff --git a/test/api.mocha.coffee b/test/api.mocha.coffee index c0cf44a3fb..fa966a9e48 100644 --- a/test/api.mocha.coffee +++ b/test/api.mocha.coffee @@ -60,7 +60,7 @@ expectSameValues = (obj1, obj2, paths) -> expect(helpers.dotGet(k,obj1)).to.eql helpers.dotGet(k,obj2) expectCode = (res, code) -> - expect(res.body.err).to.be undefined + expect(res.body.err).to.be undefined if code is 200 expect(res.statusCode).to.be code ###### Specs ###### @@ -231,6 +231,8 @@ describe 'API', -> describe 'Quests', -> party = undefined + participating = [] + notParticipating = [] it 'Invites some members', (done) -> async.waterfall [ @@ -274,6 +276,35 @@ describe 'API', -> expect(err).to.be.ok done() + it 'Starts a quest', (done) -> + async.waterfall [ + (cb)-> + request.post("#{baseURL}/groups/#{group._id}/questAccept?key=evilsanta") + .end (res) -> + expectCode(res, 401) + User.findByIdAndUpdate _id, {$set:'items.quests.evilsanta':1}, cb + (_user,cb)-> + request.post("#{baseURL}/groups/#{group._id}/questAccept?key=evilsanta") + .end (res) -> + expectCode(res, 200) + Group.findById group._id,cb + (_group,cb)-> + group = _group #refresh local group + expect(group.quest.key).to.be 'evilsanta' + + async.series (_.reduce party, (m,v,i) -> + m.push (cb2) -> + request.post("#{baseURL}/groups/#{group._id}/questAccept") + .set('X-API-User', party[i]._id) + .set('X-API-Key', party[i].apiToken) + .end (res) -> cb2() + m + , []), cb + + ], done + + it "Doesn't include people who aren't participating" + # ############ # # Batch Update