adapt create challenge tests to population

This commit is contained in:
Matteo Pagliazzi
2016-02-02 22:09:35 +01:00
parent 9af2282c36
commit a8dc529449
2 changed files with 36 additions and 23 deletions

View File

@@ -6,7 +6,7 @@ import {
import { v4 as generateUUID } from 'uuid'; import { v4 as generateUUID } from 'uuid';
describe('POST /challenges', () => { describe('POST /challenges', () => {
it('returns error when groupId is empty', async () => { it('returns error when group is empty', async () => {
let user = await generateUser(); let user = await generateUser();
await expect(user.post('/challenges')).to.eventually.be.rejected.and.eql({ await expect(user.post('/challenges')).to.eventually.be.rejected.and.eql({
@@ -20,7 +20,7 @@ describe('POST /challenges', () => {
let user = await generateUser(); let user = await generateUser();
await expect(user.post(`/challenges`, { await expect(user.post(`/challenges`, {
groupId: generateUUID(), group: generateUUID(),
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 404, code: 404,
error: 'NotFound', error: 'NotFound',
@@ -32,7 +32,7 @@ describe('POST /challenges', () => {
let user = await generateUser(); let user = await generateUser();
await expect(user.post(`/challenges`, { await expect(user.post(`/challenges`, {
groupId: 'habitrpg', group: 'habitrpg',
prize: 0, prize: 0,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
@@ -51,7 +51,7 @@ describe('POST /challenges', () => {
}); });
await expect(user.post(`/challenges`, { await expect(user.post(`/challenges`, {
groupId: group._id, group: group._id,
prize: 4, prize: 4,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
@@ -86,7 +86,7 @@ describe('POST /challenges', () => {
it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => { it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => {
await expect(groupMember.post(`/challenges`, { await expect(groupMember.post(`/challenges`, {
groupId: group._id, group: group._id,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
@@ -96,7 +96,7 @@ describe('POST /challenges', () => {
it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => { it('returns an error when non-leader member creates a challenge in leaderOnly group', async () => {
await expect(groupMember.post(`/challenges`, { await expect(groupMember.post(`/challenges`, {
groupId: group._id, group: group._id,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 401, code: 401,
error: 'NotAuthorized', error: 'NotAuthorized',
@@ -112,11 +112,16 @@ describe('POST /challenges', () => {
group = populatedGroup.group; group = populatedGroup.group;
groupMember = populatedGroup.members[0]; groupMember = populatedGroup.members[0];
await expect(groupMember.post(`/challenges`, { let chal = await groupMember.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
})).to.eventually.have.property('leader', groupMember._id); });
expect(chal.leader).to.eql({
_id: groupMember._id,
profile: {name: groupMember.profile.name},
});
}); });
it('doesn\'t take gems from user or group when challenge has no prize', async () => { it('doesn\'t take gems from user or group when challenge has no prize', async () => {
@@ -124,7 +129,7 @@ describe('POST /challenges', () => {
let oldGroupBalance = group.balance; let oldGroupBalance = group.balance;
await groupLeader.post(`/challenges`, { await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
prize: 0, prize: 0,
@@ -136,7 +141,7 @@ describe('POST /challenges', () => {
it('returns error when user and group can\'t pay prize', async () => { it('returns error when user and group can\'t pay prize', async () => {
await expect(groupLeader.post(`/challenges`, { await expect(groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
prize: 20, prize: 20,
@@ -153,7 +158,7 @@ describe('POST /challenges', () => {
let prize = 4; let prize = 4;
await groupLeader.post(`/challenges`, { await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
prize, prize,
@@ -168,7 +173,7 @@ describe('POST /challenges', () => {
let prize = 8; let prize = 8;
await groupLeader.post(`/challenges`, { await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
prize, prize,
@@ -184,7 +189,7 @@ describe('POST /challenges', () => {
await group.update({ balance: 0}); await group.update({ balance: 0});
await groupLeader.post(`/challenges`, { await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
prize, prize,
@@ -198,7 +203,7 @@ describe('POST /challenges', () => {
let oldChallengeCount = group.challengeCount; let oldChallengeCount = group.challengeCount;
await groupLeader.post(`/challenges`, { await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
}); });
@@ -214,7 +219,7 @@ describe('POST /challenges', () => {
}); });
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
official: true, official: true,
@@ -225,7 +230,7 @@ describe('POST /challenges', () => {
it('doesn\'t set challenge as official if official flag is set by non-admin', async () => { it('doesn\'t set challenge as official if official flag is set by non-admin', async () => {
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
official: true, official: true,
@@ -241,7 +246,7 @@ describe('POST /challenges', () => {
let oldGroupBalance = group.balance; let oldGroupBalance = group.balance;
await expect(groupLeader.post(`/challenges`, { await expect(groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
prize: 8, prize: 8,
})).to.eventually.be.rejected.and.eql({ })).to.eventually.be.rejected.and.eql({
code: 400, code: 400,
@@ -265,26 +270,34 @@ describe('POST /challenges', () => {
let prize = 4; let prize = 4;
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name, name,
shortName, shortName,
description, description,
prize, prize,
}); });
expect(challenge.leader).to.eql(groupLeader._id); expect(challenge.leader).to.eql({
_id: groupLeader._id,
profile: {name: groupLeader.profile.name},
});
expect(challenge.name).to.eql(name); expect(challenge.name).to.eql(name);
expect(challenge.shortName).to.eql(shortName); expect(challenge.shortName).to.eql(shortName);
expect(challenge.description).to.eql(description); expect(challenge.description).to.eql(description);
expect(challenge.official).to.be.undefined; expect(challenge.official).to.be.undefined;
expect(challenge.groupId).to.eql(group._id); expect(challenge.group).to.eql({
_id: group._id,
privacy: group.privacy,
name: group.name,
type: group.type,
});
expect(challenge.memberCount).to.eql(1); expect(challenge.memberCount).to.eql(1);
expect(challenge.prize).to.eql(prize); expect(challenge.prize).to.eql(prize);
}); });
it('adds challenge to creator\'s challenges', async () => { it('adds challenge to creator\'s challenges', async () => {
let challenge = await groupLeader.post(`/challenges`, { let challenge = await groupLeader.post(`/challenges`, {
groupId: group._id, group: group._id,
name: 'Test Challenge', name: 'Test Challenge',
shortName: 'TC', shortName: 'TC',
}); });

View File

@@ -107,7 +107,7 @@ api.createChallenge = {
}; };
await savedChal.syncToUser(user); // (it also saves the user) await savedChal.syncToUser(user); // (it also saves the user)
res.respond(201, savedChal); res.respond(201, response);
}, },
}; };