Files
habitica/test/api/v2/groups/POST-groups_id.test.js
2016-01-16 21:50:54 -06:00

68 lines
1.7 KiB
JavaScript

import {
generateGroup,
generateUser,
translate as t,
} from '../../../helpers/api-integration/v2';
describe('POST /groups/:id', () => {
context('user is not the leader of the group', () => {
let user, otherUser, groupUserDoesNotOwn;
beforeEach(async () => {
return Promise.all([
generateUser({ balance: 10 }),
generateUser({ balance: 10 }),
]).then((users) => {
user = users[0];
otherUser = users[1];
return generateGroup(otherUser, {
name: 'Group not Owned By User',
type: 'guild',
privacy: 'public',
members: [user, otherUser],
});
}).then((group) => {
groupUserDoesNotOwn = group;
});
});
it('does not allow user to update group', async () => {
return expect(user.post(`/groups/${groupUserDoesNotOwn._id}`, {
name: 'Change',
})).to.eventually.be.rejected.and.eql({
code: 401,
text: t('messageGroupOnlyLeaderCanUpdate'),
});
});
});
context('user is the leader of the group', () => {
let user, usersGroup;
beforeEach(async () => {
user = await generateUser({
balance: 10,
});
usersGroup = await generateGroup(user, {
name: 'Original Group Title',
type: 'guild',
privacy: 'public',
});
});
it('allows user to update group', async () => {
await user.post(`/groups/${usersGroup._id}`, {
name: 'New Group Title',
description: 'New group description',
});
await usersGroup.sync();
expect(usersGroup.name).to.eql('New Group Title');
expect(usersGroup.description).to.eql('New group description');
});
});
});