From 1c94c1a9684f07b7cd41387a5abe4966b5de0029 Mon Sep 17 00:00:00 2001 From: negue Date: Sat, 2 May 2020 21:48:16 +0200 Subject: [PATCH] fix: return full inbox on user-v3-api (#12146) * fix inbox on user-v3-api + test * add @benkelaar suggestions --- test/api/v3/integration/user/GET-user.test.js | 20 +++++++++++++++++++ .../v4/inbox/GET-inbox-conversations.test.js | 2 +- website/server/libs/inbox/index.js | 5 ++++- website/server/models/user/methods.js | 4 +++- 4 files changed, 28 insertions(+), 3 deletions(-) diff --git a/test/api/v3/integration/user/GET-user.test.js b/test/api/v3/integration/user/GET-user.test.js index 8e49aed515..f9def56422 100644 --- a/test/api/v3/integration/user/GET-user.test.js +++ b/test/api/v3/integration/user/GET-user.test.js @@ -1,3 +1,4 @@ +import range from 'lodash/range'; import { generateUser, } from '../../../../helpers/api-integration/v3'; @@ -46,4 +47,23 @@ describe('GET /user', () => { expect(returnedUser.apiToken).to.not.exist; expect(returnedUser.secret).to.not.exist; }); + + it('returns the full inbox', async () => { + const otherUser = await generateUser(); + const amountOfMessages = 12; + + const allMessagesPromise = range(amountOfMessages) + .map(i => otherUser.post('/members/send-private-message', { + toUserId: user.id, + message: `Message Num: ${i}`, + })); + + await Promise.all(allMessagesPromise); + + const returnedUser = await user.get('/user'); + + expect(returnedUser._id).to.equal(user._id); + expect(returnedUser.inbox).to.exist; + expect(Object.keys(returnedUser.inbox.messages)).to.have.a.lengthOf(amountOfMessages); + }); }); diff --git a/test/api/v4/inbox/GET-inbox-conversations.test.js b/test/api/v4/inbox/GET-inbox-conversations.test.js index d2317a3f65..1ee66dda51 100644 --- a/test/api/v4/inbox/GET-inbox-conversations.test.js +++ b/test/api/v4/inbox/GET-inbox-conversations.test.js @@ -63,7 +63,7 @@ describe('GET /inbox/conversations', () => { expect(messages[4].text).to.equal('first'); }); - it('returns four messages when using page-query ', async () => { + it('returns five messages when using page-query ', async () => { const promises = []; for (let i = 0; i < 10; i += 1) { diff --git a/website/server/libs/inbox/index.js b/website/server/libs/inbox/index.js index a807aae622..4846850589 100644 --- a/website/server/libs/inbox/index.js +++ b/website/server/libs/inbox/index.js @@ -34,7 +34,10 @@ export async function sentMessage (sender, receiver, message, translate) { const PM_PER_PAGE = 10; const getUserInboxDefaultOptions = { - asArray: true, page: 0, conversation: null, mapProps: false, + asArray: true, + page: undefined, + conversation: null, + mapProps: false, }; export async function getUserInbox (user, optionParams = getUserInboxDefaultOptions) { diff --git a/website/server/models/user/methods.js b/website/server/models/user/methods.js index 5596fde843..678f3110c8 100644 --- a/website/server/models/user/methods.js +++ b/website/server/models/user/methods.js @@ -497,7 +497,9 @@ schema.methods.toJSONWithInbox = async function userToJSONWithInbox () { const toJSON = user.toJSON(); if (toJSON.inbox) { - toJSON.inbox.messages = await inboxLib.getUserInbox(user, { asArray: false }); + toJSON.inbox.messages = await inboxLib.getUserInbox(user, { + asArray: false, + }); } return toJSON;