diff --git a/test/api/groups.coffee b/test/api/groups.coffee index 0e74e912c0..2daa783645 100644 --- a/test/api/groups.coffee +++ b/test/api/groups.coffee @@ -270,7 +270,8 @@ describe "Guilds", -> userToBecomeLeader = undefined request.post(baseURL + "/groups").send( name: "TestGuildToEmptyAndAssignLeader" - type: "guild" + type: "guild", + privacy: "public" ).end (res) -> guildToEmptyAndAssignLeader = res.body #Add members to guild diff --git a/website/src/models/group.js b/website/src/models/group.js index 36699bf356..56d64f6ec2 100644 --- a/website/src/models/group.js +++ b/website/src/models/group.js @@ -424,16 +424,20 @@ GroupSchema.methods.leave = function(user, keep, mainCb){ var seniorMember = _.find(group.members, function (m) {return m != user._id}); // If the leader is leaving (or if the leader previously left, and this wasn't accounted for) var leader = group.leader; - if (leader == user._id || !~group.members.indexOf(leader)) { - update['$set'] = update['$set'] || {}; - update['$set'].leader = seniorMember; - } - leader = group.quest && group.quest.leader; + // could not exist in case of public guild with 1 member who is leaving + if(seniorMember){ + if (leader == user._id || !~group.members.indexOf(leader)) { + update['$set'] = update['$set'] || {}; + update['$set'].leader = seniorMember; + } - if (leader && (leader == user._id || !~group.members.indexOf(leader))) { - update['$set'] = update['$set'] || {}; - update['$set']['quest.leader'] = seniorMember; + leader = group.quest && group.quest.leader; + + if (leader && (leader == user._id || !~group.members.indexOf(leader))) { + update['$set'] = update['$set'] || {}; + update['$set']['quest.leader'] = seniorMember; + } } update['$inc'] = {memberCount: -1};