Move chat tests to new infrastructure

This commit is contained in:
Blade Barringer
2015-10-30 14:47:14 -05:00
parent 68660b3043
commit ad6fbef85c
8 changed files with 363 additions and 80 deletions
@@ -0,0 +1,42 @@
import {
createAndPopulateGroup,
generateUser,
requester,
translate as t,
} from '../../../helpers/api.helper';
describe('DELETE /groups/:id/chat', () => {
let api, group, message, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
},
}).then((res) => {
group = res.group;
user = res.leader;
api = requester(user);
return api.post(`/groups/${group._id}/chat`, null, { message: 'Some message', });
}).then((res) => {
message = res.message;
});
});
it('deletes a message', () => {
return api.del(`/groups/${group._id}/chat/${message.id}`).then((res) => {
return api.get(`/groups/${group._id}/chat/`);
}).then((messages) => {
expect(messages).to.have.length(0);
});
});
it('returns an error is message does not exist', () => {
return expect(api.del(`/groups/${group._id}/chat/some-fake-id`)).to.eventually.be.rejected.and.eql({
code: 404,
text: t('messageGroupChatNotFound'),
});
});
});
@@ -0,0 +1,48 @@
import {
createAndPopulateGroup,
generateUser,
requester,
translate as t,
} from '../../../helpers/api.helper';
describe('GET /groups/:id/chat', () => {
context('group with multiple messages', () => {
let group, member, message1, message2, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
},
members: 1,
}).then((res) => {
group = res.group;
user = res.leader;
member = res.members[0];
return requester(member).post(`/groups/${group._id}/chat`, null, { message: 'Group member message' });
}).then((res) => {
message1 = res.message;
return requester(user).post(`/groups/${group._id}/chat`, null, { message: 'User message' });
}).then((res) => {
message2 = res.message;
});
});
it('gets messages', () => {
let api = requester(user);
return api.get(`/groups/${group._id}/chat`).then((messages) => {
expect(messages).to.have.length(2);
let message = messages[0];
expect(message.id).to.exist;
expect(message.text).to.exist;
expect(message.uuid).to.exist;
});
});
});
});
@@ -0,0 +1,46 @@
import {
createAndPopulateGroup,
generateUser,
requester,
translate as t,
} from '../../../helpers/api.helper';
describe('POST /groups/:id/chat', () => {
let api, group, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
},
}).then((res) => {
group = res.group;
user = res.leader;
api = requester(user);
});
});
it('creates a chat message', () => {
return api.post(`/groups/${group._id}/chat`, null, {
message: 'Test Message',
}).then((res) => {
let message = res.message;
expect(message.id).to.exist;
expect(message.timestamp).to.exist;
expect(message.text).to.eql('Test Message');
expect(message.uuid).to.eql(user._id);
});
});
it('does not post an empty message', () => {
return expect(api.post(`/groups/${group._id}/chat`, null, {
message: '',
})).to.eventually.be.rejected.and.eql({
code: 400,
text: t('messageGroupChatBlankMessage'),
});
});
});
@@ -0,0 +1,102 @@
import {
createAndPopulateGroup,
generateUser,
requester,
translate as t,
} from '../../../helpers/api.helper';
describe('POST /groups/:id/chat/:id/flag', () => {
context('another member\'s message', () => {
let group, member, message, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
},
members: 1,
}).then((res) => {
group = res.group;
user = res.leader;
member = res.members[0];
return requester(member)
.post(`/groups/${group._id}/chat`, null, { message: 'Group member message', });
}).then((res) => {
message = res.message;
});
});
it('flags message', () => {
let api = requester(user);
return api.post(`/groups/${group._id}/chat/${message.id}/flag`).then((messages) => {
return api.get(`/groups/${group._id}/chat`);
}).then((messages) => {
let message = messages[0];
expect(message.flags[user._id]).to.eql(true);
});
});
});
context('own message', () => {
let api, group, message, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
members: 1,
},
}).then((res) => {
group = res.group;
user = res.leader;
api = requester(user);
return api.post(`/groups/${group._id}/chat`, null, { message: 'User\'s own message', });
}).then((res) => {
message = res.message;
});
});
it('cannot flag message', () => {
let api = requester(user);
return expect(api.post(`/groups/${group._id}/chat/${message.id}/flag`))
.to.eventually.be.rejected.and.eql({
code: 401,
text: t('messageGroupChatFlagOwnMessage'),
});
});
});
context('nonexistant message', () => {
let api, group, message, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
},
}).then((res) => {
group = res.group;
user = res.leader;
api = requester(user);
});
});
it('returns error', () => {
let api = requester(user);
return expect(api.post(`/groups/${group._id}/chat/non-existant-message/flag`))
.to.eventually.be.rejected.and.eql({
code: 404,
text: t('messageGroupChatNotFound'),
});
});
});
});
@@ -0,0 +1,111 @@
import {
createAndPopulateGroup,
generateUser,
requester,
translate as t,
} from '../../../helpers/api.helper';
describe('POST /groups/:id/chat/:id/like', () => {
context('another member\'s message', () => {
let group, member, message, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
},
members: 1,
}).then((res) => {
group = res.group;
user = res.leader;
member = res.members[0];
return requester(member)
.post(`/groups/${group._id}/chat`, null, { message: 'Group member message', });
}).then((res) => {
message = res.message;
});
});
it('likes message', () => {
let api = requester(user);
return api.post(`/groups/${group._id}/chat/${message.id}/like`).then((messages) => {
let message = messages[0];
expect(message.likes[user._id]).to.eql(true);
});
});
it('returns the message object', () => {
let api = requester(user);
return api.post(`/groups/${group._id}/chat/${message.id}/like`).then((messages) => {
let message = messages[0];
expect(message.text).to.eql('Group member message');
expect(message.uuid).to.eql(member._id);
expect(message.user).to.eql(member.profile.name);
});
});
});
context('own message', () => {
let api, group, message, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
members: 1,
},
}).then((res) => {
group = res.group;
user = res.leader;
api = requester(user);
return api.post(`/groups/${group._id}/chat`, null, { message: 'User\'s own message', });
}).then((res) => {
message = res.message;
});
});
it('cannot like message', () => {
let api = requester(user);
return expect(api.post(`/groups/${group._id}/chat/${message.id}/like`))
.to.eventually.be.rejected.and.eql({
code: 401,
text: t('messageGroupChatLikeOwnMessage'),
});
});
});
context('nonexistant message', () => {
let api, group, message, user;
beforeEach(() => {
return createAndPopulateGroup({
groupDetails: {
type: 'guild',
privacy: 'public',
},
}).then((res) => {
group = res.group;
user = res.leader;
api = requester(user);
});
});
it('returns error', () => {
let api = requester(user);
return expect(api.post(`/groups/${group._id}/chat/non-existant-message/like`))
.to.eventually.be.rejected.and.eql({
code: 404,
text: t('messageGroupChatNotFound'),
});
});
});
});