booting a member from party removes member from quest whether the quest is started or not. part of #7653

This commit is contained in:
Husman
2016-07-30 08:22:25 -07:00
parent 6804125068
commit 6859cf1f73
2 changed files with 52 additions and 7 deletions

View File

@@ -84,7 +84,7 @@ describe('POST /groups/:groupId/removeMember/:memberId', () => {
context('Party', () => { context('Party', () => {
let party; let party;
let partyleader; let partyLeader;
let partyInvitedUser; let partyInvitedUser;
let partyMember; let partyMember;
@@ -100,13 +100,13 @@ describe('POST /groups/:groupId/removeMember/:memberId', () => {
}); });
party = group; party = group;
partyleader = groupLeader; partyLeader = groupLeader;
partyInvitedUser = invitees[0]; partyInvitedUser = invitees[0];
partyMember = members[0]; partyMember = members[0];
}); });
it('can remove other members', async () => { it('can remove other members', async () => {
await partyleader.post(`/groups/${party._id}/removeMember/${partyMember._id}`); await partyLeader.post(`/groups/${party._id}/removeMember/${partyMember._id}`);
let memberRemoved = await partyMember.get('/user'); let memberRemoved = await partyMember.get('/user');
@@ -115,16 +115,61 @@ describe('POST /groups/:groupId/removeMember/:memberId', () => {
it('updates memberCount', async () => { it('updates memberCount', async () => {
let oldMemberCount = party.memberCount; let oldMemberCount = party.memberCount;
await partyleader.post(`/groups/${party._id}/removeMember/${partyMember._id}`); await partyLeader.post(`/groups/${party._id}/removeMember/${partyMember._id}`);
await expect(partyleader.get(`/groups/${party._id}`)).to.eventually.have.property('memberCount', oldMemberCount - 1); await expect(partyLeader.get(`/groups/${party._id}`)).to.eventually.have.property('memberCount', oldMemberCount - 1);
}); });
it('can remove other invites', async () => { it('can remove other invites', async () => {
await partyleader.post(`/groups/${party._id}/removeMember/${partyInvitedUser._id}`); await partyLeader.post(`/groups/${party._id}/removeMember/${partyInvitedUser._id}`);
let invitedUserWithoutInvite = await partyInvitedUser.get('/user'); let invitedUserWithoutInvite = await partyInvitedUser.get('/user');
expect(_.findIndex(invitedUserWithoutInvite.invitations.party, {id: party._id})).eql(-1); expect(_.findIndex(invitedUserWithoutInvite.invitations.party, {id: party._id})).eql(-1);
}); });
it('removes user from quest when removing user from party after quest starts', async () => {
let petQuest = 'whale';
await partyLeader.update({
[`items.quests.${petQuest}`]: 1,
});
await partyLeader.post(`/groups/${party._id}/quests/invite/${petQuest}`);
await partyMember.post(`/groups/${party._id}/quests/accept`);
await party.sync();
expect(party.quest.members[partyLeader._id]).to.be.true;
expect(party.quest.members[partyMember._id]).to.be.true;
await partyLeader.post(`/groups/${party._id}/removeMember/${partyMember._id}`);
await party.sync();
expect(party.quest.members[partyLeader._id]).to.be.true;
expect(party.quest.members[partyMember._id]).to.not.exist;
});
it('removes user from quest when removing user from party before quest starts', async () => {
let petQuest = 'whale';
await partyLeader.update({
[`items.quests.${petQuest}`]: 1,
});
await partyInvitedUser.post(`/groups/${party._id}/join`);
await partyLeader.post(`/groups/${party._id}/quests/invite/${petQuest}`);
await partyMember.post(`/groups/${party._id}/quests/accept`);
await party.sync();
expect(party.quest.active).to.be.false;
expect(party.quest.members[partyLeader._id]).to.be.true;
expect(party.quest.members[partyMember._id]).to.be.true;
await partyLeader.post(`/groups/${party._id}/removeMember/${partyMember._id}`);
await party.sync();
expect(party.quest.members[partyLeader._id]).to.be.true;
expect(party.quest.members[partyMember._id]).to.not.exist;
});
}); });
}); });

View File

@@ -436,7 +436,7 @@ api.removeGroupMember = {
group.quest.leader = undefined; group.quest.leader = undefined;
} else if (group.quest && group.quest.members) { } else if (group.quest && group.quest.members) {
// remove member from quest // remove member from quest
group.quest.members[member._id] = undefined; delete group.quest.members[member._id];
group.markModified('quest.members'); group.markModified('quest.members');
} }