From 68f4275c4411c25f9f79d29d9a62c46803c88fbf Mon Sep 17 00:00:00 2001 From: Matteo Pagliazzi Date: Wed, 18 Jan 2017 20:17:56 +0100 Subject: [PATCH] fix tests failures (#8422) * fix tests failures * make sure _meta is not public * fix typo * fix typo --- .../quests/POST-groups_groupId_quests_accept.test.js | 4 ++++ .../POST-groups_groupId_quests_force-start.test.js | 4 ++++ .../quests/POST-groups_groupId_quests_invite.test.js | 4 ++++ .../quests/POST-groups_groupid_quests_abort.test.js | 6 ++++-- .../quests/POST-groups_groupid_quests_reject.test.js | 4 ++++ test/api/v3/unit/models/group.test.js | 12 ++++++++++-- website/client/components/inventory/index.vue | 2 +- website/server/models/group.js | 5 +++++ 8 files changed, 36 insertions(+), 5 deletions(-) diff --git a/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js b/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js index ea5f32d23f..ecff25cfd3 100644 --- a/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupId_quests_accept.test.js @@ -158,6 +158,10 @@ describe('POST /groups/:groupId/quests/accept', () => { await questingGroup.sync(); expect(questingGroup.chat[0].text).to.exist; expect(questingGroup.chat[0]._meta).to.exist; + expect(questingGroup.chat[0]._meta).to.have.all.keys(['participatingMembers']); + + let returnedGroup = await leader.get(`/groups/${questingGroup._id}`); + expect(returnedGroup.chat[0]._meta).to.be.undefined; }); }); }); diff --git a/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js b/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js index d07ba9e31a..76497f50e9 100644 --- a/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupId_quests_force-start.test.js @@ -243,6 +243,10 @@ describe('POST /groups/:groupId/quests/force-start', () => { expect(questingGroup.chat[0].text).to.exist; expect(questingGroup.chat[0]._meta).to.exist; + expect(questingGroup.chat[0]._meta).to.have.all.keys(['participatingMembers']); + + let returnedGroup = await leader.get(`/groups/${questingGroup._id}`); + expect(returnedGroup.chat[0]._meta).to.be.undefined; }); }); }); diff --git a/test/api/v3/integration/quests/POST-groups_groupId_quests_invite.test.js b/test/api/v3/integration/quests/POST-groups_groupId_quests_invite.test.js index b2e0b832aa..7757c4c2ac 100644 --- a/test/api/v3/integration/quests/POST-groups_groupId_quests_invite.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupId_quests_invite.test.js @@ -203,6 +203,10 @@ describe('POST /groups/:groupId/quests/invite/:questKey', () => { expect(group.chat[0].text).to.exist; expect(group.chat[0]._meta).to.exist; + expect(group.chat[0]._meta).to.have.all.keys(['participatingMembers']); + + let returnedGroup = await groupLeader.get(`/groups/${group._id}`); + expect(returnedGroup.chat[0]._meta).to.be.undefined; }); }); }); diff --git a/test/api/v3/integration/quests/POST-groups_groupid_quests_abort.test.js b/test/api/v3/integration/quests/POST-groups_groupid_quests_abort.test.js index 18f8e24623..9b5503736b 100644 --- a/test/api/v3/integration/quests/POST-groups_groupid_quests_abort.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupid_quests_abort.test.js @@ -86,11 +86,12 @@ describe('POST /groups/:groupId/quests/abort', () => { }); it('aborts a quest', async () => { - sandbox.stub(Group.prototype, 'sendChat'); await leader.post(`/groups/${questingGroup._id}/quests/invite/${PET_QUEST}`); await partyMembers[0].post(`/groups/${questingGroup._id}/quests/accept`); await partyMembers[1].post(`/groups/${questingGroup._id}/quests/accept`); + let stub = sandbox.stub(Group.prototype, 'sendChat'); + let res = await leader.post(`/groups/${questingGroup._id}/quests/abort`); await Promise.all([ leader.sync(), @@ -127,6 +128,7 @@ describe('POST /groups/:groupId/quests/abort', () => { }); expect(Group.prototype.sendChat).to.be.calledOnce; expect(Group.prototype.sendChat).to.be.calledWithMatch(/aborted the party quest Wail of the Whale.`/); - Group.prototype.sendChat.restore(); + + stub.restore(); }); }); diff --git a/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js b/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js index d3b0806089..46dfb5a88d 100644 --- a/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js +++ b/test/api/v3/integration/quests/POST-groups_groupid_quests_reject.test.js @@ -189,6 +189,10 @@ describe('POST /groups/:groupId/quests/reject', () => { expect(questingGroup.chat[0].text).to.exist; expect(questingGroup.chat[0]._meta).to.exist; + expect(questingGroup.chat[0]._meta).to.have.all.keys(['participatingMembers']); + + let returnedGroup = await leader.get(`/groups/${questingGroup._id}`); + expect(returnedGroup.chat[0]._meta).to.be.undefined; }); }); }); diff --git a/test/api/v3/unit/models/group.test.js b/test/api/v3/unit/models/group.test.js index e439b36e9d..485b516fcf 100644 --- a/test/api/v3/unit/models/group.test.js +++ b/test/api/v3/unit/models/group.test.js @@ -170,15 +170,19 @@ describe('Group Model', () => { }); context('Boss Quests', () => { + let sendChatStub; + beforeEach(async () => { party.quest.key = 'whale'; await party.startQuest(questLeader); await party.save(); - sandbox.stub(Group.prototype, 'sendChat'); + sendChatStub = sandbox.stub(Group.prototype, 'sendChat'); }); + afterEach(() => sendChatStub.restore()); + it('applies user\'s progress to quest boss hp', async () => { await Group.processQuestProgress(participatingMember, progress); @@ -322,15 +326,19 @@ describe('Group Model', () => { }); context('Collection Quests', () => { + let sendChatStub; + beforeEach(async () => { party.quest.key = 'atom1'; await party.startQuest(questLeader); await party.save(); - sandbox.stub(Group.prototype, 'sendChat'); + sendChatStub = sandbox.stub(Group.prototype, 'sendChat'); }); + afterEach(() => sendChatStub.restore()); + it('applies user\'s progress to found quest items', async () => { await Group.processQuestProgress(participatingMember, progress); diff --git a/website/client/components/inventory/index.vue b/website/client/components/inventory/index.vue index 0058b3d8fd..998e546467 100644 --- a/website/client/components/inventory/index.vue +++ b/website/client/components/inventory/index.vue @@ -2,7 +2,7 @@ .row .sixteen.wide.column .ui.secondary.menu - router-link.item(:to="{name: 'inventory'}") + router-link.item(:to="{name: 'inventory'}", exact) span(v-once) {{ $t('inventory') }} router-link.item(:to="{name: 'equipment'}") span(v-once) {{ $t('equipment') }} diff --git a/website/server/models/group.js b/website/server/models/group.js index ae8a3f594f..0905df6b83 100644 --- a/website/server/models/group.js +++ b/website/server/models/group.js @@ -268,12 +268,14 @@ schema.statics.getGroups = async function getGroups (options = {}) { // When converting to json remove chat messages with more than 1 flag and remove all flags info // unless the user is an admin // Not putting into toJSON because there we can't access user +// It also removes the _meta field that can be stored inside a chat message schema.statics.toJSONCleanChat = function groupToJSONCleanChat (group, user) { let toJSON = group.toJSON(); if (!user.contributor.admin) { _.remove(toJSON.chat, chatMsg => { chatMsg.flags = {}; + if (chatMsg._meta) chatMsg._meta = undefined; return chatMsg.flagCount >= 2; }); } @@ -391,6 +393,9 @@ export function chatDefaults (msg, user) { schema.methods.sendChat = function sendChat (message, user, metaData) { let newMessage = chatDefaults(message, user); + + // Optional data stored in the chat message but not returned + // to the users that can be stored for debugging purposes if (metaData) { newMessage._meta = metaData; }