Move Chat to Model (#9703)
* Began moving group chat to separate model * Fixed lint issue * Updated delete chat with new model * Updated flag chat to support model * Updated like chat to use model * Fixed duplicate code and chat messages * Added note about concat chat * Updated clear flags to user new model * Updated more chat checks when loading get group * Fixed spell test and back save * Moved get chat to json method * Updated flagging with new chat model * Added missing await * Fixed chat user styles. Fixed spell group test * Added new model to quest chat and group plan chat * Removed extra timestamps. Added limit check for group plans * Updated tests * Synced id fields * Fixed id creation * Add meta and fixed tests * Fixed group quest accept test * Updated puppeteer * Added migration * Export vars * Updated comments
This commit is contained in:
committed by
Sabe Jones
parent
0ec1a91774
commit
7d7fe6047c
@@ -53,16 +53,26 @@ describe('DELETE /groups/:groupId/chat/:chatId', () => {
|
||||
|
||||
it('allows creator to delete a their message', async () => {
|
||||
await user.del(`/groups/${groupWithChat._id}/chat/${nextMessage.id}`);
|
||||
let messages = await user.get(`/groups/${groupWithChat._id}/chat/`);
|
||||
expect(messages).is.an('array');
|
||||
expect(messages).to.not.include(nextMessage);
|
||||
|
||||
const returnedMessages = await user.get(`/groups/${groupWithChat._id}/chat/`);
|
||||
const messageFromUser = returnedMessages.find(returnedMessage => {
|
||||
return returnedMessage.id === nextMessage.id;
|
||||
});
|
||||
|
||||
expect(returnedMessages).is.an('array');
|
||||
expect(messageFromUser).to.not.exist;
|
||||
});
|
||||
|
||||
it('allows admin to delete another user\'s message', async () => {
|
||||
await admin.del(`/groups/${groupWithChat._id}/chat/${nextMessage.id}`);
|
||||
let messages = await user.get(`/groups/${groupWithChat._id}/chat/`);
|
||||
expect(messages).is.an('array');
|
||||
expect(messages).to.not.include(nextMessage);
|
||||
|
||||
const returnedMessages = await user.get(`/groups/${groupWithChat._id}/chat/`);
|
||||
const messageFromUser = returnedMessages.find(returnedMessage => {
|
||||
return returnedMessage.id === nextMessage.id;
|
||||
});
|
||||
|
||||
expect(returnedMessages).is.an('array');
|
||||
expect(messageFromUser).to.not.exist;
|
||||
});
|
||||
|
||||
it('returns empty when previous message parameter is passed and the last message was deleted', async () => {
|
||||
@@ -71,9 +81,9 @@ describe('DELETE /groups/:groupId/chat/:chatId', () => {
|
||||
});
|
||||
|
||||
it('returns the update chat when previous message parameter is passed and the chat is updated', async () => {
|
||||
let deleteResult = await user.del(`/groups/${groupWithChat._id}/chat/${nextMessage.id}?previousMsg=${message.id}`);
|
||||
const updatedChat = await user.del(`/groups/${groupWithChat._id}/chat/${nextMessage.id}?previousMsg=${message.id}`);
|
||||
|
||||
expect(deleteResult[0].id).to.eql(message.id);
|
||||
expect(updatedChat[0].id).to.eql(message.id);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -23,14 +23,14 @@ describe('GET /groups/:groupId/chat', () => {
|
||||
privacy: 'public',
|
||||
}, {
|
||||
chat: [
|
||||
{text: 'Hello', flags: {}},
|
||||
{text: 'Welcome to the Guild', flags: {}},
|
||||
{text: 'Hello', flags: {}, id: 1},
|
||||
{text: 'Welcome to the Guild', flags: {}, id: 2},
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
it('returns Guild chat', async () => {
|
||||
let chat = await user.get(`/groups/${group._id}/chat`);
|
||||
const chat = await user.get(`/groups/${group._id}/chat`);
|
||||
|
||||
expect(chat).to.eql(group.chat);
|
||||
});
|
||||
|
||||
@@ -381,9 +381,11 @@ describe('POST /chat', () => {
|
||||
});
|
||||
|
||||
it('creates a chat', async () => {
|
||||
let message = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage});
|
||||
const newMessage = await user.post(`/groups/${groupWithChat._id}/chat`, { message: testMessage});
|
||||
const groupMessages = await user.get(`/groups/${groupWithChat._id}/chat`);
|
||||
|
||||
expect(message.message.id).to.exist;
|
||||
expect(newMessage.message.id).to.exist;
|
||||
expect(groupMessages[0].id).to.exist;
|
||||
});
|
||||
|
||||
it('creates a chat with user styles', async () => {
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
generateUser,
|
||||
sleep,
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import { model as Chat } from '../../../../../website/server/models/chat';
|
||||
|
||||
describe('POST /groups/:groupId/quests/accept', () => {
|
||||
const PET_QUEST = 'whale';
|
||||
@@ -155,10 +156,11 @@ describe('POST /groups/:groupId/quests/accept', () => {
|
||||
// quest will start after everyone has accepted
|
||||
await partyMembers[1].post(`/groups/${questingGroup._id}/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']);
|
||||
const groupChat = await Chat.find({ groupId: questingGroup._id }).exec();
|
||||
|
||||
expect(groupChat[0].text).to.exist;
|
||||
expect(groupChat[0]._meta).to.exist;
|
||||
expect(groupChat[0]._meta).to.have.all.keys(['participatingMembers']);
|
||||
|
||||
let returnedGroup = await leader.get(`/groups/${questingGroup._id}`);
|
||||
expect(returnedGroup.chat[0]._meta).to.be.undefined;
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
generateUser,
|
||||
sleep,
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import { model as Chat } from '../../../../../website/server/models/chat';
|
||||
|
||||
describe('POST /groups/:groupId/quests/force-start', () => {
|
||||
const PET_QUEST = 'whale';
|
||||
@@ -241,11 +242,13 @@ describe('POST /groups/:groupId/quests/force-start', () => {
|
||||
|
||||
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']);
|
||||
const groupChat = await Chat.find({ groupId: questingGroup._id }).exec();
|
||||
|
||||
let returnedGroup = await leader.get(`/groups/${questingGroup._id}`);
|
||||
expect(groupChat[0].text).to.exist;
|
||||
expect(groupChat[0]._meta).to.exist;
|
||||
expect(groupChat[0]._meta).to.have.all.keys(['participatingMembers']);
|
||||
|
||||
const returnedGroup = await leader.get(`/groups/${questingGroup._id}`);
|
||||
expect(returnedGroup.chat[0]._meta).to.be.undefined;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import { v4 as generateUUID } from 'uuid';
|
||||
import { quests as questScrolls } from '../../../../../website/common/script/content';
|
||||
import { model as Chat } from '../../../../../website/server/models/chat';
|
||||
|
||||
describe('POST /groups/:groupId/quests/invite/:questKey', () => {
|
||||
let questingGroup;
|
||||
@@ -199,11 +200,11 @@ describe('POST /groups/:groupId/quests/invite/:questKey', () => {
|
||||
|
||||
await groupLeader.post(`/groups/${group._id}/quests/invite/${PET_QUEST}`);
|
||||
|
||||
await group.sync();
|
||||
const groupChat = await Chat.find({ groupId: group._id }).exec();
|
||||
|
||||
expect(group.chat[0].text).to.exist;
|
||||
expect(group.chat[0]._meta).to.exist;
|
||||
expect(group.chat[0]._meta).to.have.all.keys(['participatingMembers']);
|
||||
expect(groupChat[0].text).to.exist;
|
||||
expect(groupChat[0]._meta).to.exist;
|
||||
expect(groupChat[0]._meta).to.have.all.keys(['participatingMembers']);
|
||||
|
||||
let returnedGroup = await groupLeader.get(`/groups/${group._id}`);
|
||||
expect(returnedGroup.chat[0]._meta).to.be.undefined;
|
||||
|
||||
@@ -90,7 +90,7 @@ describe('POST /groups/:groupId/quests/abort', () => {
|
||||
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 stub = sandbox.spy(Group.prototype, 'sendChat');
|
||||
|
||||
let res = await leader.post(`/groups/${questingGroup._id}/quests/abort`);
|
||||
await Promise.all([
|
||||
|
||||
@@ -5,6 +5,7 @@ import {
|
||||
sleep,
|
||||
} from '../../../../helpers/api-v3-integration.helper';
|
||||
import { v4 as generateUUID } from 'uuid';
|
||||
import { model as Chat } from '../../../../../website/server/models/chat';
|
||||
|
||||
describe('POST /groups/:groupId/quests/reject', () => {
|
||||
let questingGroup;
|
||||
@@ -185,11 +186,12 @@ describe('POST /groups/:groupId/quests/reject', () => {
|
||||
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/reject`);
|
||||
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']);
|
||||
const groupChat = await Chat.find({ groupId: questingGroup._id }).exec();
|
||||
|
||||
expect(groupChat[0].text).to.exist;
|
||||
expect(groupChat[0]._meta).to.exist;
|
||||
expect(groupChat[0]._meta).to.have.all.keys(['participatingMembers']);
|
||||
|
||||
let returnedGroup = await leader.get(`/groups/${questingGroup._id}`);
|
||||
expect(returnedGroup.chat[0]._meta).to.be.undefined;
|
||||
|
||||
@@ -180,11 +180,13 @@ describe('POST /user/class/cast/:spellId', () => {
|
||||
members: 1,
|
||||
});
|
||||
await groupLeader.update({'stats.mp': 200, 'stats.class': 'wizard', 'stats.lvl': 13});
|
||||
|
||||
await groupLeader.post('/user/class/cast/earth');
|
||||
await sleep(1);
|
||||
await group.sync();
|
||||
expect(group.chat[0]).to.exist;
|
||||
expect(group.chat[0].uuid).to.equal('system');
|
||||
const groupMessages = await groupLeader.get(`/groups/${group._id}/chat`);
|
||||
|
||||
expect(groupMessages[0]).to.exist;
|
||||
expect(groupMessages[0].uuid).to.equal('system');
|
||||
});
|
||||
|
||||
it('Ethereal Surge does not recover mp of other mages', async () => {
|
||||
@@ -226,7 +228,7 @@ describe('POST /user/class/cast/:spellId', () => {
|
||||
await groupLeader.post('/user/class/cast/earth', {quantity: 2});
|
||||
|
||||
await sleep(1);
|
||||
await group.sync();
|
||||
group = await groupLeader.get(`/groups/${group._id}`);
|
||||
|
||||
expect(group.chat[0]).to.exist;
|
||||
expect(group.chat[0].uuid).to.equal('system');
|
||||
|
||||
@@ -182,7 +182,7 @@ describe('Group Model', () => {
|
||||
await party.startQuest(questLeader);
|
||||
await party.save();
|
||||
|
||||
sendChatStub = sandbox.stub(Group.prototype, 'sendChat');
|
||||
sendChatStub = sandbox.spy(Group.prototype, 'sendChat');
|
||||
});
|
||||
|
||||
afterEach(() => sendChatStub.restore());
|
||||
@@ -378,7 +378,7 @@ describe('Group Model', () => {
|
||||
await party.startQuest(questLeader);
|
||||
await party.save();
|
||||
|
||||
sendChatStub = sandbox.stub(Group.prototype, 'sendChat');
|
||||
sendChatStub = sandbox.spy(Group.prototype, 'sendChat');
|
||||
});
|
||||
|
||||
afterEach(() => sendChatStub.restore());
|
||||
@@ -918,21 +918,8 @@ describe('Group Model', () => {
|
||||
sandbox.spy(User, 'update');
|
||||
});
|
||||
|
||||
it('puts message at top of chat array', () => {
|
||||
let oldMessage = {
|
||||
text: 'a message',
|
||||
};
|
||||
party.chat.push(oldMessage, oldMessage, oldMessage);
|
||||
|
||||
party.sendChat('a new message', {_id: 'user-id', profile: { name: 'user name' }});
|
||||
|
||||
expect(party.chat).to.have.a.lengthOf(4);
|
||||
expect(party.chat[0].text).to.eql('a new message');
|
||||
expect(party.chat[0].uuid).to.eql('user-id');
|
||||
});
|
||||
|
||||
it('formats message', () => {
|
||||
party.sendChat('a new message', {
|
||||
const chatMessage = party.sendChat('a new message', {
|
||||
_id: 'user-id',
|
||||
profile: { name: 'user name' },
|
||||
contributor: {
|
||||
@@ -947,11 +934,11 @@ describe('Group Model', () => {
|
||||
},
|
||||
});
|
||||
|
||||
let chat = party.chat[0];
|
||||
const chat = chatMessage;
|
||||
|
||||
expect(chat.text).to.eql('a new message');
|
||||
expect(validator.isUUID(chat.id)).to.eql(true);
|
||||
expect(chat.timestamp).to.be.a('number');
|
||||
expect(chat.timestamp).to.be.a('date');
|
||||
expect(chat.likes).to.eql({});
|
||||
expect(chat.flags).to.eql({});
|
||||
expect(chat.flagCount).to.eql(0);
|
||||
@@ -962,13 +949,11 @@ describe('Group Model', () => {
|
||||
});
|
||||
|
||||
it('formats message as system if no user is passed in', () => {
|
||||
party.sendChat('a system message');
|
||||
|
||||
let chat = party.chat[0];
|
||||
const chat = party.sendChat('a system message');
|
||||
|
||||
expect(chat.text).to.eql('a system message');
|
||||
expect(validator.isUUID(chat.id)).to.eql(true);
|
||||
expect(chat.timestamp).to.be.a('number');
|
||||
expect(chat.timestamp).to.be.a('date');
|
||||
expect(chat.likes).to.eql({});
|
||||
expect(chat.flags).to.eql({});
|
||||
expect(chat.flagCount).to.eql(0);
|
||||
|
||||
Reference in New Issue
Block a user