From 5ef4b7b395de78b1a1944ca8e30c8159183c780e Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Thu, 16 Apr 2015 07:32:56 -0500 Subject: [PATCH] Add tests for isMemberOf --- test/spec/groupCtrlSpec.js | 54 +++++++++++++++++++++ test/spec/specHelper.js | 16 ++++++ website/public/js/controllers/groupsCtrl.js | 4 +- 3 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 test/spec/groupCtrlSpec.js diff --git a/test/spec/groupCtrlSpec.js b/test/spec/groupCtrlSpec.js new file mode 100644 index 0000000000..503d1e21a8 --- /dev/null +++ b/test/spec/groupCtrlSpec.js @@ -0,0 +1,54 @@ +'use strict'; + +describe('Groups Controller', function() { + var scope, ctrl, groups, user, guild, $rootScope; + + beforeEach(function() { + module(function($provide) { + $provide.value('User', {}); + }); + + inject(function($rootScope, $controller, Groups){ + user = specHelper.newUser(); + user._id = "unique-user-id"; + + scope = $rootScope.$new(); + + // Load RootCtrl to ensure shared behaviors are loaded + $controller('RootCtrl', {$scope: scope, User: {user: user}}); + + ctrl = $controller('GroupsCtrl', {$scope: scope, User: {user: user}}); + + groups = Groups; + }); + }); + + it('isMemberOfGroup returns true if guild is included in myGuilds call', function(){ + + guild = specHelper.newGroup("leaders-user-id"); + guild._id = "unique-guild-id"; + guild.type = 'guild'; + guild.members.push(user._id); + + var myGuilds = sinon.stub(groups,"myGuilds", function() { + return [guild]; + }); + + expect(scope.isMemberOfGroup(user._id, guild)).to.be.eql(true); + expect(myGuilds).to.be.called + }); + + it('isMemberOfGroup does not return true if guild is not included in myGuilds call', function(){ + + guild = specHelper.newGroup("leaders-user-id"); + guild._id = "unique-guild-id"; + guild.type = 'guild'; + + var myGuilds = sinon.stub(groups,"myGuilds", function() { + return []; + }); + + expect(scope.isMemberOfGroup(user._id, guild)).to.not.be.eql(true); + expect(myGuilds).to.be.called + }); +}); diff --git a/test/spec/specHelper.js b/test/spec/specHelper.js index 8f3451fe52..c8806640f8 100644 --- a/test/spec/specHelper.js +++ b/test/spec/specHelper.js @@ -29,5 +29,21 @@ specHelper = { achievements: {}, }; return user; + }, + newGroup: function(leader) { + var quest = { progress: { }, active: false }; + group = { + "leader" : leader, + "quest" : quest, + "memberCount" : 1, + "chat" : [], + "privacy" : "public", + "invites" : [], + "members" : [ + leader + ] + }; + return group; } }; + diff --git a/website/public/js/controllers/groupsCtrl.js b/website/public/js/controllers/groupsCtrl.js index 3211d85cb3..7fe7ea5be9 100644 --- a/website/public/js/controllers/groupsCtrl.js +++ b/website/public/js/controllers/groupsCtrl.js @@ -20,9 +20,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Shared', 'Groups', ' // If the group is a guild, just check for an intersection with the // current user's guilds, rather than checking the members of the group. if(group.type === 'guild') { - if (_.detect(Groups.myGuilds(), function(g) { return g._id === group._id })) { - return true; - } + return _.detect(Groups.myGuilds(), function(g) { return g._id === group._id }) } if (!group.members) return false;