mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
Use promise syntax in POST groups test.
This commit is contained in:
@@ -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,82 +37,53 @@ 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);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
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) => {
|
|
||||||
api.post('/groups', {
|
|
||||||
type: 'party',
|
|
||||||
})
|
|
||||||
.then((group) => {
|
|
||||||
expect(group._id).to.exist;
|
|
||||||
done();
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
done(err);
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('prevents party creation if user is already in party', (done) => {
|
it('allows party creation without gems', () => {
|
||||||
generateGroup(leader, {
|
return expect(api.post('/groups', {
|
||||||
|
type: 'party',
|
||||||
|
})).to.eventually.have.property('_id');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('prevents party creation if user is already in party', () => {
|
||||||
|
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);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user