Merge pull request #7583 from crookedneighbor/fix_quest_modal_not_being_cleaned_up
fix: Cleanup quest progress for non-members when quest starts
This commit is contained in:
@@ -3,6 +3,7 @@ import {
|
||||
translate as t,
|
||||
generateUser,
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import Bluebird from 'bluebird';
|
||||
|
||||
describe('POST /groups/:groupId/quests/accept', () => {
|
||||
const PET_QUEST = 'whale';
|
||||
@@ -115,5 +116,22 @@ describe('POST /groups/:groupId/quests/accept', () => {
|
||||
await questingGroup.sync();
|
||||
expect(questingGroup.quest.active).to.equal(true);
|
||||
});
|
||||
|
||||
it('cleans up user quest data for non-quest members when last member accepts', async () => {
|
||||
let rejectingMember = partyMembers[0];
|
||||
|
||||
await leader.post(`/groups/${questingGroup._id}/quests/invite/${PET_QUEST}`);
|
||||
await rejectingMember.post(`/groups/${questingGroup._id}/quests/reject`);
|
||||
// quest will start after everyone has accepted
|
||||
await partyMembers[1].post(`/groups/${questingGroup._id}/quests/accept`);
|
||||
|
||||
await Bluebird.delay(500);
|
||||
|
||||
await rejectingMember.sync();
|
||||
|
||||
expect(rejectingMember.party.quest.RSVPNeeded).to.eql(false);
|
||||
expect(rejectingMember.party.quest.key).to.not.exist;
|
||||
expect(rejectingMember.party.quest.completed).to.not.exist;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -3,6 +3,7 @@ import {
|
||||
translate as t,
|
||||
generateUser,
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import Bluebird from 'bluebird';
|
||||
|
||||
describe('POST /groups/:groupId/quests/force-start', () => {
|
||||
const PET_QUEST = 'whale';
|
||||
@@ -14,7 +15,7 @@ describe('POST /groups/:groupId/quests/force-start', () => {
|
||||
beforeEach(async () => {
|
||||
let { group, groupLeader, members } = await createAndPopulateGroup({
|
||||
groupDetails: { type: 'party', privacy: 'private' },
|
||||
members: 2,
|
||||
members: 3,
|
||||
});
|
||||
|
||||
questingGroup = group;
|
||||
@@ -63,8 +64,9 @@ describe('POST /groups/:groupId/quests/force-start', () => {
|
||||
it('does not force start for a quest already underway', async () => {
|
||||
await leader.post(`/groups/${questingGroup._id}/quests/invite/${PET_QUEST}`);
|
||||
await partyMembers[0].post(`/groups/${questingGroup._id}/quests/accept`);
|
||||
// quest will start after everyone has accepted
|
||||
await partyMembers[1].post(`/groups/${questingGroup._id}/quests/accept`);
|
||||
// quest will start after everyone has accepted
|
||||
await partyMembers[2].post(`/groups/${questingGroup._id}/quests/accept`);
|
||||
|
||||
await expect(leader.post(`/groups/${questingGroup._id}/quests/force-start`))
|
||||
.to.eventually.be.rejected.and.eql({
|
||||
@@ -122,5 +124,30 @@ describe('POST /groups/:groupId/quests/force-start', () => {
|
||||
[`${leader._id}`]: true,
|
||||
});
|
||||
});
|
||||
|
||||
it('cleans up user quest data for non-quest members', async () => {
|
||||
let partyMemberThatRejects = partyMembers[1];
|
||||
let partyMemberThatIgnores = partyMembers[2];
|
||||
|
||||
await leader.post(`/groups/${questingGroup._id}/quests/invite/${PET_QUEST}`);
|
||||
await partyMembers[0].post(`/groups/${questingGroup._id}/quests/accept`);
|
||||
await partyMemberThatRejects.post(`/groups/${questingGroup._id}/quests/reject`);
|
||||
|
||||
await leader.post(`/groups/${questingGroup._id}/quests/force-start`);
|
||||
|
||||
await Bluebird.delay(500);
|
||||
|
||||
await Promise.all([
|
||||
partyMemberThatRejects.sync(),
|
||||
partyMemberThatIgnores.sync(),
|
||||
]);
|
||||
|
||||
expect(partyMemberThatRejects.party.quest.RSVPNeeded).to.eql(false);
|
||||
expect(partyMemberThatRejects.party.quest.key).to.not.exist;
|
||||
expect(partyMemberThatRejects.party.quest.completed).to.not.exist;
|
||||
expect(partyMemberThatIgnores.party.quest.RSVPNeeded).to.eql(false);
|
||||
expect(partyMemberThatIgnores.party.quest.key).to.not.exist;
|
||||
expect(partyMemberThatIgnores.party.quest.completed).to.not.exist;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
generateUser,
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import { v4 as generateUUID } from 'uuid';
|
||||
import Bluebird from 'bluebird';
|
||||
|
||||
describe('POST /groups/:groupId/quests/reject', () => {
|
||||
let questingGroup;
|
||||
@@ -142,5 +143,26 @@ describe('POST /groups/:groupId/quests/reject', () => {
|
||||
|
||||
expect(questingGroup.quest.active).to.be.true;
|
||||
});
|
||||
|
||||
it('cleans up user quest data for non-quest members when last member rejects', async () => {
|
||||
let rejectingMember = partyMembers[1];
|
||||
|
||||
await leader.post(`/groups/${questingGroup._id}/quests/invite/${PET_QUEST}`);
|
||||
await partyMembers[0].post(`/groups/${questingGroup._id}/quests/accept`);
|
||||
// quest will start after everyone has accepted or rejected
|
||||
await rejectingMember.post(`/groups/${questingGroup._id}/quests/reject`);
|
||||
|
||||
await Bluebird.delay(500);
|
||||
|
||||
await questingGroup.sync();
|
||||
|
||||
expect(questingGroup.quest.active).to.be.true;
|
||||
|
||||
await rejectingMember.sync();
|
||||
|
||||
expect(rejectingMember.party.quest.RSVPNeeded).to.eql(false);
|
||||
expect(rejectingMember.party.quest.key).to.not.exist;
|
||||
expect(rejectingMember.party.quest.completed).to.not.exist;
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user