mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
Groups now make joining user the leader when they are empty
This commit is contained in:
@@ -249,6 +249,69 @@ describe "Guilds", ->
|
||||
done()
|
||||
|
||||
describe "Public Guilds", ->
|
||||
before (done) ->
|
||||
async.waterfall [
|
||||
(cb) ->
|
||||
registerNewUser ->
|
||||
User.findByIdAndUpdate user._id, {$set: { "balance": 10 } }, (err, _user) ->
|
||||
cb()
|
||||
, true
|
||||
], done
|
||||
|
||||
context "joining groups", ->
|
||||
it "makes user a group leader when group is empty", (done) ->
|
||||
guildToEmptyAndAssignLeader = undefined
|
||||
members = undefined
|
||||
userToBecomeLeader = undefined
|
||||
request.post(baseURL + "/groups").send(
|
||||
name: "TestGuildToEmptyAndAssignLeader"
|
||||
type: "guild"
|
||||
).end (res) ->
|
||||
guildToEmptyAndAssignLeader = res.body
|
||||
#Add members to guild
|
||||
async.waterfall [
|
||||
(cb) ->
|
||||
registerManyUsers 1, cb
|
||||
|
||||
(_members, cb) ->
|
||||
userToBecomeLeader = _members[0]
|
||||
members = _members
|
||||
inviteURL = baseURL + "/groups/" + guildToEmptyAndAssignLeader._id + "/invite"
|
||||
request.post(inviteURL).send(
|
||||
uuids: [userToBecomeLeader._id]
|
||||
)
|
||||
.end ->
|
||||
cb()
|
||||
|
||||
(cb) ->
|
||||
request.post(baseURL + "/groups/" + guildToEmptyAndAssignLeader._id + "/leave")
|
||||
.send()
|
||||
.end (res) ->
|
||||
expectCode res, 204
|
||||
cb()
|
||||
|
||||
(cb) ->
|
||||
request.post(baseURL + "/groups/" + guildToEmptyAndAssignLeader._id + "/join")
|
||||
.set("X-API-User", userToBecomeLeader._id)
|
||||
.set("X-API-Key", userToBecomeLeader.apiToken)
|
||||
.end (res) ->
|
||||
expectCode res, 200
|
||||
cb()
|
||||
|
||||
(cb) ->
|
||||
request.get(baseURL + "/groups/" + guildToEmptyAndAssignLeader._id)
|
||||
.set("X-API-User", userToBecomeLeader._id)
|
||||
.set("X-API-Key", userToBecomeLeader.apiToken)
|
||||
.send()
|
||||
.end (res) ->
|
||||
expectCode res, 200
|
||||
g = res.body
|
||||
expect(g.leader._id).to.equal(userToBecomeLeader._id)
|
||||
cb()
|
||||
|
||||
], done
|
||||
|
||||
context "viewing", ->
|
||||
guild = undefined
|
||||
before (done) ->
|
||||
async.waterfall [
|
||||
@@ -303,7 +366,6 @@ describe "Guilds", ->
|
||||
expect(userInGroup).to.exist
|
||||
done()
|
||||
|
||||
|
||||
context "is not a member", ->
|
||||
before (done) ->
|
||||
registerNewUser done, true
|
||||
|
||||
@@ -462,6 +462,9 @@ api.join = function(req, res, next) {
|
||||
if(!isUserInvited) return res.json(401, {err: "Can't join a group you're not invited to."});
|
||||
|
||||
if (!_.contains(group.members, user._id)){
|
||||
if (group.members.length === 0) {
|
||||
group.leader = user._id;
|
||||
}
|
||||
group.members.push(user._id);
|
||||
if (group.invites.length > 0) {
|
||||
group.invites.splice(_.indexOf(group.invites, user._id), 1);
|
||||
|
||||
Reference in New Issue
Block a user