mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-07-27 00:59:42 +00:00
105 lines
3.4 KiB
JavaScript
105 lines
3.4 KiB
JavaScript
|
|
import find from 'lodash/find';
|
||
|
|
import {
|
||
|
|
generateUser,
|
||
|
|
translate as t,
|
||
|
|
} from '../../../helpers/api-integration/v4';
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Checks the messages array if the uniqueMessageId has the like flag
|
||
|
|
* @param {InboxMessage[]} messages
|
||
|
|
* @param {String} uniqueMessageId
|
||
|
|
* @param {String} userId
|
||
|
|
* @param {Boolean} likeStatus
|
||
|
|
*/
|
||
|
|
function expectMessagesLikeStatus (messages, uniqueMessageId, userId, likeStatus) {
|
||
|
|
const messageToCheck = find(messages, { uniqueMessageId });
|
||
|
|
|
||
|
|
expect(messageToCheck.likes[userId]).to.equal(likeStatus);
|
||
|
|
}
|
||
|
|
|
||
|
|
// eslint-disable-next-line mocha/no-exclusive-tests
|
||
|
|
describe('POST /inbox/like-private-message/:messageId', () => {
|
||
|
|
let userToSendMessage;
|
||
|
|
const getLikeUrl = messageId => `/inbox/like-private-message/${messageId}`;
|
||
|
|
|
||
|
|
before(async () => {
|
||
|
|
userToSendMessage = await generateUser();
|
||
|
|
});
|
||
|
|
|
||
|
|
it('returns an error when private message is not found', async () => {
|
||
|
|
await expect(userToSendMessage.post(getLikeUrl('some-unknown-id')))
|
||
|
|
.to.eventually.be.rejected.and.eql({
|
||
|
|
code: 404,
|
||
|
|
error: 'NotFound',
|
||
|
|
message: t('messageGroupChatNotFound'),
|
||
|
|
});
|
||
|
|
});
|
||
|
|
|
||
|
|
it('likes a message', async () => {
|
||
|
|
const receiver = await generateUser();
|
||
|
|
|
||
|
|
const sentMessageResult = await userToSendMessage.post('/members/send-private-message', {
|
||
|
|
message: 'some message :)',
|
||
|
|
toUserId: receiver._id,
|
||
|
|
});
|
||
|
|
|
||
|
|
const { uniqueMessageId } = sentMessageResult.message;
|
||
|
|
|
||
|
|
const likeResult = await receiver.post(getLikeUrl(uniqueMessageId));
|
||
|
|
expect(likeResult.likes[receiver._id]).to.equal(true);
|
||
|
|
|
||
|
|
const senderMessages = await userToSendMessage.get('/inbox/messages');
|
||
|
|
|
||
|
|
expectMessagesLikeStatus(senderMessages, uniqueMessageId, receiver._id, true);
|
||
|
|
|
||
|
|
const receiversMessages = await receiver.get('/inbox/messages');
|
||
|
|
|
||
|
|
expectMessagesLikeStatus(receiversMessages, uniqueMessageId, receiver._id, true);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('allows a user to like their own private message', async () => {
|
||
|
|
const receiver = await generateUser();
|
||
|
|
|
||
|
|
const sentMessageResult = await userToSendMessage.post('/members/send-private-message', {
|
||
|
|
message: 'some message :)',
|
||
|
|
toUserId: receiver._id,
|
||
|
|
});
|
||
|
|
|
||
|
|
const { uniqueMessageId } = sentMessageResult.message;
|
||
|
|
|
||
|
|
const likeResult = await userToSendMessage.post(getLikeUrl(uniqueMessageId));
|
||
|
|
expect(likeResult.likes[userToSendMessage._id]).to.equal(true);
|
||
|
|
|
||
|
|
const messages = await userToSendMessage.get('/inbox/messages');
|
||
|
|
expectMessagesLikeStatus(messages, uniqueMessageId, userToSendMessage._id, true);
|
||
|
|
|
||
|
|
const receiversMessages = await receiver.get('/inbox/messages');
|
||
|
|
|
||
|
|
expectMessagesLikeStatus(receiversMessages, uniqueMessageId, userToSendMessage._id, true);
|
||
|
|
});
|
||
|
|
|
||
|
|
it('unlikes a message', async () => {
|
||
|
|
const receiver = await generateUser();
|
||
|
|
|
||
|
|
const sentMessageResult = await userToSendMessage.post('/members/send-private-message', {
|
||
|
|
message: 'some message :)',
|
||
|
|
toUserId: receiver._id,
|
||
|
|
});
|
||
|
|
|
||
|
|
const { uniqueMessageId } = sentMessageResult.message;
|
||
|
|
|
||
|
|
const likeResult = await receiver.post(getLikeUrl(uniqueMessageId));
|
||
|
|
|
||
|
|
expect(likeResult.likes[receiver._id]).to.equal(true);
|
||
|
|
|
||
|
|
const unlikeResult = await receiver.post(getLikeUrl(uniqueMessageId));
|
||
|
|
|
||
|
|
expect(unlikeResult.likes[receiver._id]).to.equal(false);
|
||
|
|
|
||
|
|
const messages = await userToSendMessage.get('/inbox/messages');
|
||
|
|
|
||
|
|
const messageToCheck = find(messages, { id: sentMessageResult.message.id });
|
||
|
|
expect(messageToCheck.likes[receiver._id]).to.equal(false);
|
||
|
|
});
|
||
|
|
});
|