import { createAndPopulateGroup, translate as t, } from '../../../../helpers/api-v3-integration.helper'; describe('POST /chat', () => { let user, groupWithChat, userWithChatRevoked, member; let testMessage = 'Test Message'; before(async () => { let { group, groupLeader, members } = await createAndPopulateGroup({ groupDetails: { name: 'Test Guild', type: 'guild', privacy: 'public', }, members: 2, }); user = groupLeader; groupWithChat = group; userWithChatRevoked = await members[0].update({'flags.chatRevoked': true}); member = members[0]; }); it('Returns an error when no message is provided', async () => { await expect(user.post(`/groups/${groupWithChat._id}/chat`, { message: ''})) .to.eventually.be.rejected.and.eql({ code: 400, error: 'BadRequest', message: t('invalidReqParams'), }); }); it('Returns an error when group is not found', async () => { await expect(user.post('/groups/invalidID/chat', { message: testMessage})).to.eventually.be.rejected.and.eql({ code: 404, error: 'NotFound', message: t('groupNotFound'), }); }); it('Returns an error when chat privileges are revoked', async () => { await expect(userWithChatRevoked.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage})).to.eventually.be.rejected.and.eql({ code: 404, error: 'NotFound', message: 'Your chat privileges have been revoked.', }); }); it('creates a chat', async () => { let message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage}); expect(message.message.id).to.exist; }); it('notifies other users of new messages for a guild', async () => { let message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage}); let memberWithNotification = await member.get('/user'); expect(message.message.id).to.exist; expect(memberWithNotification.newMessages[`${groupWithChat._id}`]).to.exist; }); it('notifies other users of new messages for a party', async () => { let { group, groupLeader, members } = await createAndPopulateGroup({ groupDetails: { name: 'Test Party', type: 'party', privacy: 'private', }, members: 1, }); let message = await groupLeader.post(`/groups/${group._id}/chat`, { message: testMessage}); let memberWithNotification = await members[0].get('/user'); expect(message.message.id).to.exist; expect(memberWithNotification.newMessages[`${group._id}`]).to.exist; }); });