mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 22:57:21 +01:00
booting a member from party removes member from quest whether the quest is started or not. part of #7653
This commit is contained in:
@@ -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;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -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');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user