diff --git a/test/api/v3/integration/inbox/GET-inbox_messages.test.js b/test/api/v3/integration/inbox/GET-inbox_messages.test.js index c0c86a8a00c..491b444cab5 100644 --- a/test/api/v3/integration/inbox/GET-inbox_messages.test.js +++ b/test/api/v3/integration/inbox/GET-inbox_messages.test.js @@ -6,7 +6,7 @@ describe('GET /inbox/messages', () => { let user; let otherUser; - before(async () => { + beforeEach(async () => { [user, otherUser] = await Promise.all([generateUser(), generateUser()]); await otherUser.post('/members/send-private-message', { diff --git a/test/api/v4/inbox/GET-inbox-conversations.test.js b/test/api/v4/inbox/GET-inbox-conversations.test.js index 33131b871ae..ccd999b274c 100644 --- a/test/api/v4/inbox/GET-inbox-conversations.test.js +++ b/test/api/v4/inbox/GET-inbox-conversations.test.js @@ -7,7 +7,7 @@ describe('GET /inbox/conversations', () => { let otherUser; let thirdUser; - before(async () => { + beforeEach(async () => { [user, otherUser, thirdUser] = await Promise.all([generateUser(), generateUser(), generateUser()]); await otherUser.post('/members/send-private-message', { @@ -41,4 +41,51 @@ describe('GET /inbox/conversations', () => { expect(result[0].user).to.be.equal(user.profile.name); expect(result[0].username).to.be.equal(user.auth.local.username); }); + + it('returns the user inbox messages as an array of ordered messages (from most to least recent)', async () => { + const messages = await user.get('/inbox/messages'); + + expect(messages.length).to.equal(5); + + // message to yourself + expect(messages[0].text).to.equal('fifth'); + expect(messages[0].sent).to.equal(false); + expect(messages[0].uuid).to.equal(user._id); + + expect(messages[1].text).to.equal('fourth'); + expect(messages[2].text).to.equal('third'); + expect(messages[3].text).to.equal('second'); + expect(messages[4].text).to.equal('first'); + }); + + it('returns four messages when using page-query ', async () => { + const promises = []; + + for (let i = 0; i < 10; i++) { + promises.push(user.post('/members/send-private-message', { + toUserId: user.id, + message: 'fourth', + })); + } + + await Promise.all(promises); + + const messages = await user.get('/inbox/messages?page=1'); + + expect(messages.length).to.equal(5); + }); + + it('returns only the messages of one conversation', async () => { + const messages = await user.get(`/inbox/messages?conversation=${otherUser.id}`); + + expect(messages.length).to.equal(3); + }); + + it('returns the correct message format', async () => { + const messages = await otherUser.get(`/inbox/messages?conversation=${user.id}`); + + expect(messages[0].toUUID).to.equal(user.id); // from user + expect(messages[1].toUUID).to.not.exist; // only filled if its from the chat partner + expect(messages[2].toUUID).to.equal(user.id); // from user + }); }); diff --git a/test/api/v4/members/POST-flag_private_message.test.js b/test/api/v4/members/POST-flag_private_message.test.js index dbeb9b5e18f..90c52fa0909 100644 --- a/test/api/v4/members/POST-flag_private_message.test.js +++ b/test/api/v4/members/POST-flag_private_message.test.js @@ -22,7 +22,7 @@ describe('POST /members/flag-private-message/:messageId', () => { let senderMessages = await userToSendMessage.get('/inbox/messages'); let sendersMessageInSendersInbox = _.find(senderMessages, (message) => { - return message.uuid === receiver._id && message.text === messageToSend; + return message.toUUID === receiver._id && message.text === messageToSend; }); expect(sendersMessageInSendersInbox).to.exist; diff --git a/website/client/components/chat/chatCard.vue b/website/client/components/chat/chatCard.vue index fac207d5c0f..220ec7d8915 100644 --- a/website/client/components/chat/chatCard.vue +++ b/website/client/components/chat/chatCard.vue @@ -273,5 +273,8 @@ export default { return habiticaMarkdown.render(String(text)); }, }, + mounted () { + this.$emit('item-mounted', this.msg.id); + }, }; diff --git a/website/client/components/chat/chatMessages.vue b/website/client/components/chat/chatMessages.vue index 6ee84b98d8b..48361d4297c 100644 --- a/website/client/components/chat/chatMessages.vue +++ b/website/client/components/chat/chatMessages.vue @@ -1,8 +1,14 @@