check for membership when leaving public guild, fix memberCount update when leaving group, add missing files

This commit is contained in:
Matteo Pagliazzi
2016-02-28 01:11:45 +01:00
parent 733da70b48
commit 5e68589ac8
6 changed files with 62 additions and 14 deletions
@@ -3,6 +3,8 @@ import {
checkExistence,
createAndPopulateGroup,
sleep,
generateUser,
translate as t,
} from '../../../../helpers/api-v3-integration.helper';
import {
each,
@@ -20,6 +22,7 @@ describe('POST /groups/:groupId/leave', () => {
let groupToLeave;
let leader;
let member;
let memberCount;
beforeEach(async () => {
let { group, groupLeader, members } = await createAndPopulateGroup({
@@ -30,6 +33,16 @@ describe('POST /groups/:groupId/leave', () => {
groupToLeave = group;
leader = groupLeader;
member = members[0];
memberCount = group.memberCount;
});
it('prevents non members from leaving', async () => {
let user = await generateUser();
await expect(user.post(`/groups/${groupToLeave._id}/leave`)).to.eventually.be.rejected.and.eql({
code: 404,
error: 'NotFound',
message: t('groupNotFound'),
});
});
it(`lets user leave a ${groupType}`, async () => {
@@ -39,14 +52,16 @@ describe('POST /groups/:groupId/leave', () => {
expect(userThatLeftGroup.guilds).to.be.empty;
expect(userThatLeftGroup.party._id).to.not.exist;
await groupToLeave.sync();
expect(groupToLeave.memberCount).to.equal(memberCount - 1);
});
it(`sets a new group leader when leader leaves a ${groupType}`, async () => {
await leader.post(`/groups/${groupToLeave._id}/leave`);
let groupToLeaveWithNewLeader = await member.get(`/groups/${groupToLeave._id}`);
expect(groupToLeaveWithNewLeader.leader._id).to.equal(member._id);
await groupToLeave.sync();
expect(groupToLeave.memberCount).to.equal(memberCount - 1);
expect(groupToLeave.leader).to.equal(member._id);
});
context('With challenges', () => {
@@ -0,0 +1,3 @@
describe('GET /user/auth/logout', () => {
// TODO Test manually
});
@@ -0,0 +1,18 @@
import {
generateUser,
} from '../../../../../helpers/api-integration/v3';
import moment from 'moment';
describe('POST /user/auth/firebase', () => {
let user;
before(async () => {
user = await generateUser();
});
it('returns a Firebase token', async () => {
let {token, expires} = await user.post('/user/auth/firebase');
expect(moment(expires).isValid()).to.be.true;
expect(token).to.be.a('string');
});
});