Use promise syntax in POST groups test.

This commit is contained in:
Blade Barringer
2015-10-25 10:12:43 -05:00
parent 7fe2a19bc5
commit 5961e02f5f

View File

@@ -9,12 +9,11 @@ describe('POST /groups', () => {
context('All groups', () => { context('All groups', () => {
let api, leader; let api, leader;
beforeEach((done) => { beforeEach(() => {
generateUser().then((user) => { return generateUser().then((user) => {
leader = user; leader = user;
api = requester(user); api = requester(user);
done(); });
}).catch(done);
}); });
xit('returns defaults? (TODO: it\'s possible to create a group without a type. Should the group default to party? Should we require type to be set?', (done) => { xit('returns defaults? (TODO: it\'s possible to create a group without a type. Should the group default to party? Should we require type to be set?', (done) => {
@@ -29,7 +28,7 @@ describe('POST /groups', () => {
}); });
}); });
it('returns a group object', (done) => { it('returns a group object', () => {
let group = { let group = {
name: 'Test Group', name: 'Test Group',
type: 'party', type: 'party',
@@ -38,40 +37,25 @@ describe('POST /groups', () => {
leaderMessage: 'Test Group Message', leaderMessage: 'Test Group Message',
}; };
api.post('/groups', return expect(api.post('/groups', group))
group .to.eventually.shallowDeepEqual({
).then((createdGroup) => { leader: leader._id,
expect(createdGroup._id).to.exist; name: group.name,
expect(createdGroup.leader).to.eql(leader._id); description: group.description,
expect(createdGroup.name).to.eql(group.name); leaderMessage: group.leaderMessage,
expect(createdGroup.description).to.eql(group.description); leaderOnly: group.leaderOnly,
expect(createdGroup.leaderMessage).to.eql(group.leaderMessage); memberCount: 1,
expect(createdGroup.leaderOnly.challenges).to.eql(group.leaderOnly.challenges); }).and.to.have.property('_id');
expect(createdGroup.memberCount).to.eql(1);
expect(createdGroup.members).to.have.a.lengthOf(1);
done();
})
.catch((err) => {
done(err);
});
}); });
it('returns a populated members array', (done) => { it('returns a populated members array', () => {
api.post('/groups', { return expect(api.post('/groups', {
type: 'party', type: 'party',
}).then((createdGroup) => { })).to.eventually.have.deep.property('members[0]')
let member = createdGroup.members[0]; .and.to.shallowDeepEqual({
_id: leader._id,
expect(member._id).to.eql(leader._id); profile: leader.profile,
expect(member.profile.name).to.eql(leader.profile.name); contributor: leader.contributor,
expect(member.items).to.exist;
expect(member.stats).to.exist;
expect(member.achievements).to.exist;
expect(member.contributor).to.exist;
done();
})
.catch((err) => {
done(err);
}); });
}); });
}); });
@@ -79,41 +63,27 @@ describe('POST /groups', () => {
context('Parties', () => { context('Parties', () => {
let api, leader; let api, leader;
beforeEach((done) => { beforeEach(() => {
generateUser().then((user) => { return generateUser().then((user) => {
leader = user; leader = user;
api = requester(user); api = requester(user);
done(); });
}).catch(done);
}); });
it('allows party creation without gems', (done) => { it('allows party creation without gems', () => {
api.post('/groups', { return expect(api.post('/groups', {
type: 'party', type: 'party',
}) })).to.eventually.have.property('_id');
.then((group) => {
expect(group._id).to.exist;
done();
})
.catch((err) => {
done(err);
});
}); });
it('prevents party creation if user is already in party', (done) => { it('prevents party creation if user is already in party', () => {
generateGroup(leader, { return expect(generateGroup(leader, {
type: 'party', type: 'party',
}).then((group) => { }).then((group) => {
return api.post('/groups', { return api.post('/groups', {
type: 'party', type: 'party',
}); });
}).then((group) => { })).to.be.rejectedWith('Already in a party, try refreshing.');
done('Unexpected success');
})
.catch((err) => {
expect(err).to.eql('Already in a party, try refreshing.');
done();
});
}) })
xit('prevents creating a public party. TODO: it is possible to create a public party. Should we send back an error? Automatically switch the privacy to private?', (done) => { xit('prevents creating a public party. TODO: it is possible to create a public party. Should we send back an error? Automatically switch the privacy to private?', (done) => {
@@ -134,73 +104,49 @@ describe('POST /groups', () => {
context('Guilds', () => { context('Guilds', () => {
let api, leader; let api, leader;
beforeEach((done) => { beforeEach(() => {
generateUser({ return generateUser({
balance: 2, balance: 2,
}).then((user) => { }).then((user) => {
leader = user; leader = user;
api = requester(user); api = requester(user);
done(); });
}).catch(done);
}); });
it('prevents guild creation when user does not have enough gems', (done) => { it('prevents guild creation when user does not have enough gems', () => {
generateUser({ return expect(generateUser({
balance: 0.75, balance: 0.75,
}).then((user) => { }).then((user) => {
api = requester(user); api = requester(user);
return api.post('/groups', { return api.post('/groups', {
type: 'guild', type: 'guild',
}); });
}).then((group) => { })).to.be.rejectedWith('Not enough gems!');
done('Unexpected success');
}).catch((err) => {
expect(err).to.eql('Not enough gems!');
done();
});
}); });
it('can create a public guild', (done) => { it('can create a public guild', () => {
api.post('/groups', { return expect(api.post('/groups', {
type: 'guild', type: 'guild',
privacy: 'public', privacy: 'public',
}).then((group) => { })).to.eventually.have.property('leader', leader._id);
expect(group.leader).to.eql(leader._id);
done();
})
.catch((err) => {
done(err);
});
}); });
it('can create a private guild', (done) => { it('can create a private guild', () => {
api.post('/groups', { return expect(api.post('/groups', {
type: 'guild', type: 'guild',
privacy: 'private', privacy: 'private',
}).then((group) => { })).to.eventually.have.property('leader', leader._id);
expect(group.leader).to.eql(leader._id);
done();
})
.catch((err) => {
done(err);
});
}); });
it('deducts gems from user and adds them to guild bank', (done) => { it('deducts gems from user and adds them to guild bank', () => {
api.post('/groups', { return expect(api.post('/groups', {
type: 'guild', type: 'guild',
privacy: 'private', privacy: 'private',
}).then((group) => { }).then((group) => {
expect(group.balance).to.eql(1); expect(group.balance).to.eql(1);
return api.get('/user'); return api.get('/user');
}).then((user) => { })).to.eventually.have.deep.property('balance', 1);
expect(user.balance).to.eql(1);
done();
})
.catch((err) => {
done(err);
});
}); });
}); });
}); });