From 93c5cc0385624d9f07d6c94b3d0b8639438ada29 Mon Sep 17 00:00:00 2001 From: Kaitlin Hipkin Date: Tue, 15 Mar 2016 16:03:36 -0400 Subject: [PATCH] add tests for awarding party {up,on} achievs --- test/spec/controllers/partyCtrlSpec.js | 94 +++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/test/spec/controllers/partyCtrlSpec.js b/test/spec/controllers/partyCtrlSpec.js index 092072988d..e39748a18f 100644 --- a/test/spec/controllers/partyCtrlSpec.js +++ b/test/spec/controllers/partyCtrlSpec.js @@ -8,7 +8,8 @@ describe("Party Controller", function() { user._id = "unique-user-id"; User = { user: user, - sync: sandbox.spy + sync: sandbox.spy, + set: sandbox.spy } module(function($provide) { @@ -33,6 +34,97 @@ describe("Party Controller", function() { }); }); + describe('initialization', function() { + context('party has 1 member', function() { + beforeEach(function() { + sinon.stub(groups.party.memberCount).returns(1); + }); + + it('awards no new achievements', function() { + expect(User.set).to.not.be.called; + expect(rootScope.openModal).to.not.be.called; + }); + }); + + context('party has 2 members', function() { + beforeEach(function() { + sinon.stub(groups.party.memberCount).returns(2); + }); + + context('user does not have "Party Up" achievement', function() { + it('awards "Party Up" achievement', function() { + expect(User.set).to.be.calledOnce; + expect(User.set).to.be.calledWith( + { 'achievements.partyUp': true} + ); + expect(rootScope.openModal).to.be.calledOnce; + expect(rootScope.openModal).to.be.calledWith( + 'achievements/partyUp', + { controller: 'UserCtrl' } + ); + }); + }); + }); + + context('party has 4 members', function() { + beforeEach(function() { + sinon.stub(groups.party.memberCount).returns(4); + }); + + context('user has "Party Up" but not "Party On" achievement', function() { + beforeEach(function() { + user.achievements.partyUp = true; + }); + + it('awards "Party On" achievement', function() { + expect(User.set).to.be.calledOnce; + expect(User.set).to.be.calledWith( + { 'achievements.partyOn': true} + ); + expect(rootScope.openModal).to.be.calledOnce; + expect(rootScope.openModal).to.be.calledWith( + 'achievements/partyOn', + { controller: 'UserCtrl' } + ); + }); + }); + + context('user has neither "Party Up" nor "Party On" achievements', function() { + it('awards "Party Up" and "Party On" achievements', function() { + expect(User.set).to.be.calledTwice; + expect(User.set).to.be.calledWith( + { 'achievements.partyUp': true} + ); + expect(User.set).to.be.calledWith( + { 'achievements.partyOn': true} + ); + expect(rootScope.openModal).to.be.calledTwice; + expect(rootScope.openModal).to.be.calledWith( + 'achievements/partyUp', + { controller: 'UserCtrl' } + ); + expect(rootScope.openModal).to.be.calledWith( + 'achievements/partyOn', + { controller: 'UserCtrl' } + ); + }); + }); + + context('user has both "Party Up" and "Party On" achievements', function() { + beforeEach(function() { + user.achievements.partyUp = true; + user.achievements.partyOn = true; + }); + + it('awards no new achievements', function() { + expect(User.set).to.not.be.called; + expect(rootScope.openModal).to.not.be.called; + }); + }); + + }); + }); + describe('questAccept', function() { beforeEach(function() { scope.group = {