mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 23:27:26 +01:00
feat(achievements): move party cheevos to server
This commit is contained in:
@@ -189,6 +189,17 @@ describe('POST /group', () => {
|
|||||||
expect(updatedUser.party._id).to.eql(party._id);
|
expect(updatedUser.party._id).to.eql(party._id);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('does not award Party Up achievement to solo partier', async () => {
|
||||||
|
await user.post('/groups', {
|
||||||
|
name: partyName,
|
||||||
|
type: partyType,
|
||||||
|
});
|
||||||
|
|
||||||
|
let updatedUser = await user.get('/user');
|
||||||
|
|
||||||
|
expect(updatedUser.achievements.partyUp).to.not.eql(true);
|
||||||
|
});
|
||||||
|
|
||||||
it('prevents user in a party from creating another party', async () => {
|
it('prevents user in a party from creating another party', async () => {
|
||||||
await user.post('/groups', {
|
await user.post('/groups', {
|
||||||
name: partyName,
|
name: partyName,
|
||||||
|
|||||||
@@ -225,4 +225,53 @@ describe('POST /group/:groupId/join', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
context('Party incentive achievements', () => {
|
||||||
|
let leader, member, party;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
leader = await generateUser();
|
||||||
|
member = await generateUser();
|
||||||
|
party = await leader.post('/groups', {
|
||||||
|
name: 'Testing Party',
|
||||||
|
type: 'party',
|
||||||
|
});
|
||||||
|
await leader.post(`/groups/${party._id}/invite`, {
|
||||||
|
uuids: [member._id],
|
||||||
|
});
|
||||||
|
await member.post(`/groups/${party._id}/join`);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('awards Party Up achievement to party of size 2', async () => {
|
||||||
|
await member.sync();
|
||||||
|
await leader.sync();
|
||||||
|
|
||||||
|
expect(member).to.have.deep.property('achievements.partyUp', true);
|
||||||
|
expect(leader).to.have.deep.property('achievements.partyUp', true);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('does not award Party On achievement to party of size 2', async () => {
|
||||||
|
await member.sync();
|
||||||
|
await leader.sync();
|
||||||
|
|
||||||
|
expect(member).to.not.have.deep.property('achievements.partyOn');
|
||||||
|
expect(leader).to.not.have.deep.property('achievements.partyOn');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('awards Party On achievement to party of size 4', async () => {
|
||||||
|
let addlMemberOne = await generateUser();
|
||||||
|
let addlMemberTwo = await generateUser();
|
||||||
|
await leader.post(`/groups/${party._id}/invite`, {
|
||||||
|
uuids: [addlMemberOne._id, addlMemberTwo._id],
|
||||||
|
});
|
||||||
|
await addlMemberOne.post(`/groups/${party._id}/join`);
|
||||||
|
await addlMemberTwo.post(`/groups/${party._id}/join`);
|
||||||
|
|
||||||
|
await member.sync();
|
||||||
|
await leader.sync();
|
||||||
|
|
||||||
|
expect(member).to.have.deep.property('achievements.partyOn', true);
|
||||||
|
expect(leader).to.have.deep.property('achievements.partyOn', true);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -295,6 +295,12 @@ api.joinGroup = {
|
|||||||
|
|
||||||
if (group.type === 'party' && inviter) {
|
if (group.type === 'party' && inviter) {
|
||||||
promises.push(User.update({_id: inviter}, {$inc: {'items.quests.basilist': 1}}).exec()); // Reward inviter
|
promises.push(User.update({_id: inviter}, {$inc: {'items.quests.basilist': 1}}).exec()); // Reward inviter
|
||||||
|
if (group.memberCount > 1) {
|
||||||
|
promises.push(User.update({$or: [{'party._id': group._id}, {_id: user._id}], 'achievements.partyUp': {$ne: true}}, {$set: {'achievements.partyUp': true}}, {multi: true}).exec());
|
||||||
|
}
|
||||||
|
if (group.memberCount > 3) {
|
||||||
|
promises.push(User.update({$or: [{'party._id': group._id}, {_id: user._id}], 'achievements.partyOn': {$ne: true}}, {$set: {'achievements.partyOn': true}}, {multi: true}).exec());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
await Q.all(promises);
|
await Q.all(promises);
|
||||||
|
|||||||
Reference in New Issue
Block a user