From d370219142f8aee5279ab4ce0eabd2d1a37c10c1 Mon Sep 17 00:00:00 2001 From: Blade Barringer Date: Sun, 25 Oct 2015 08:59:43 -0500 Subject: [PATCH] Use promise syntax for leave groups route test. --- test/api/groups/POST-groups_id_leave.test.js | 95 +++++++++----------- 1 file changed, 44 insertions(+), 51 deletions(-) diff --git a/test/api/groups/POST-groups_id_leave.test.js b/test/api/groups/POST-groups_id_leave.test.js index 64904763ba..bd60377650 100644 --- a/test/api/groups/POST-groups_id_leave.test.js +++ b/test/api/groups/POST-groups_id_leave.test.js @@ -4,6 +4,7 @@ import { generateUser, requester, } from '../../helpers/api.helper'; +import { find } from 'lodash'; describe('POST /groups/:id/leave', () => { @@ -14,8 +15,8 @@ describe('POST /groups/:id/leave', () => { context('user is a non-leader member of a guild', () => { let api, user, group; - beforeEach((done) => { - createAndPopulateGroup({ + beforeEach(() => { + return createAndPopulateGroup({ members: 3, groupDetails: { name: 'test guild', @@ -26,15 +27,17 @@ describe('POST /groups/:id/leave', () => { user = res.members[0]; api = requester(user); group = res.group; - done(); - }).catch(done); + }); }); it('leaves the group', (done) => { api.post(`/groups/${group._id}/leave`).then((result) => { return api.get(`/groups/${group._id}`); }).then((group) => { - expect(group.members).to.not.include(user._id); + let userInGroup = find(group.members, (member) => { + return member._id === user._id; + }); + expect(userInGroup).to.not.be.ok; done(); }).catch(done); }); @@ -43,8 +46,8 @@ describe('POST /groups/:id/leave', () => { context('user is the last member of a public guild', () => { let api, user, group; - beforeEach((done) => { - createAndPopulateGroup({ + beforeEach(() => { + return createAndPopulateGroup({ groupDetails: { name: 'test guild', type: 'guild', @@ -54,25 +57,21 @@ describe('POST /groups/:id/leave', () => { user = res.leader; api = requester(user); group = res.group; - done(); - }).catch(done); + }); }); - it('leaves the group accessible', (done) => { - api.post(`/groups/${group._id}/leave`).then((result) => { + it('leaves the group accessible', () => { + return expect(api.post(`/groups/${group._id}/leave`).then((result) => { return api.get(`/groups/${group._id}`); - }).then((group) => { - expect(group._id).to.eql(group._id); - done(); - }).catch(done); + })).to.eventually.have.property('_id', group._id); }); }); context('user is the last member of a private group', () => { let api, user, group; - beforeEach((done) => { - createAndPopulateGroup({ + beforeEach(() => { + return createAndPopulateGroup({ groupDetails: { name: 'test guild', type: 'guild', @@ -82,25 +81,21 @@ describe('POST /groups/:id/leave', () => { user = res.leader; api = requester(user); group = res.group; - done(); - }).catch(done); + }); }); - it('group is not accessible after leaving', (done) => { - api.post(`/groups/${group._id}/leave`).then((result) => { + it('group is not accessible after leaving', () => { + return expect(api.post(`/groups/${group._id}/leave`).then((result) => { return api.get(`/groups/${group._id}`); - }).then(done).catch((err) => { - expect(err).to.eql('Group not found or you don\'t have access.'); - done(); - }); + })).to.be.rejectedWith('Group not found or you don\'t have access.'); }); }); context('user is the last member of a private group with pending invites', () => { let api, user, inviteeRequest1, inviteeRequest2, group; - beforeEach((done) => { - createAndPopulateGroup({ + beforeEach(() => { + return createAndPopulateGroup({ invites: 2, groupDetails: { name: 'test guild', @@ -113,29 +108,28 @@ describe('POST /groups/:id/leave', () => { inviteeRequest2 = requester(res.invitees[1]); api = requester(user); group = res.group; - done(); - }).catch(done); + }); }); - it('deletes the group invitations from users', (done) => { - api.post(`/groups/${group._id}/leave`).then((result) => { + it('deletes the group invitations from users', () => { + return api.post(`/groups/${group._id}/leave`).then((result) => { return Promise.all([ - inviteeRequest1.get(`/user`), - inviteeRequest2.get(`/user`), + expect(inviteeRequest1.get(`/user`)) + .to.eventually.have.deep.property('invitations.guilds') + .and.to.be.empty, + expect(inviteeRequest2.get(`/user`)) + .to.eventually.have.deep.property('invitations.guilds') + .and.to.be.empty, ]); - }).then((users) => { - expect(users[0].invitations.guilds[0]).to.not.exist; - expect(users[1].invitations.guilds[0]).to.not.exist; - done(); - }).catch(done); + }); }); }); context('user is the last member of a party with pending invites', () => { let api, user, inviteeRequest1, inviteeRequest2, group; - beforeEach((done) => { - createAndPopulateGroup({ + beforeEach(() => { + return createAndPopulateGroup({ invites: 2, groupDetails: { name: 'test party', @@ -148,21 +142,20 @@ describe('POST /groups/:id/leave', () => { inviteeRequest2 = requester(res.invitees[1]); api = requester(user); group = res.group; - done(); - }).catch(done); + }); }); - it('deletes the group invitations from users', (done) => { - api.post(`/groups/${group._id}/leave`).then((result) => { + it('deletes the group invitations from users', () => { + return api.post(`/groups/${group._id}/leave`).then((result) => { return Promise.all([ - inviteeRequest1.get(`/user`), - inviteeRequest2.get(`/user`), + expect(inviteeRequest1.get(`/user`)) + .to.eventually.have.deep.property('invitations.party') + .and.to.be.empty, + expect(inviteeRequest2.get(`/user`)) + .to.eventually.have.deep.property('invitations.party') + .and.to.be.empty, ]); - }).then((users) => { - expect(users[0].invitations.party).to.be.empty; - expect(users[1].invitations.party).to.be.empty; - done(); - }).catch(done); + }); }); }); });