-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #6590 from TheHollidayInn/api-v3-get-group-challenges
Added get group challenges route and initial tests
- Loading branch information
Showing
3 changed files
with
203 additions
and
5 deletions.
There are no files selected for viewing
88 changes: 88 additions & 0 deletions
88
test/api/v3/integration/challenges/GET-challenges_group_groupid.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
import { | ||
generateUser, | ||
generateChallenge, | ||
createAndPopulateGroup, | ||
translate as t, | ||
} from '../../../../helpers/api-v3-integration.helper'; | ||
|
||
describe('GET challenges/group/:groupId', () => { | ||
context('Public Guild', () => { | ||
let publicGuild, user, nonMember, challenge, challenge2; | ||
|
||
before(async () => { | ||
let { group, groupLeader } = await createAndPopulateGroup({ | ||
groupDetails: { | ||
name: 'TestGuild', | ||
type: 'guild', | ||
privacy: 'public', | ||
}, | ||
}); | ||
|
||
publicGuild = group; | ||
user = groupLeader; | ||
|
||
nonMember = await generateUser(); | ||
|
||
challenge = await generateChallenge(user, group); | ||
challenge2 = await generateChallenge(user, group); | ||
}); | ||
|
||
it('should return group challenges for non member', async () => { | ||
let challenges = await nonMember.get(`/challenges/groups/${publicGuild._id}`); | ||
|
||
let foundChallenge1 = _.find(challenges, { _id: challenge._id }); | ||
expect(foundChallenge1).to.exist; | ||
let foundChallenge2 = _.find(challenges, { _id: challenge2._id }); | ||
expect(foundChallenge2).to.exist; | ||
}); | ||
|
||
it('should return group challenges for member', async () => { | ||
let challenges = await user.get(`/challenges/groups/${publicGuild._id}`); | ||
|
||
let foundChallenge1 = _.find(challenges, { _id: challenge._id }); | ||
expect(foundChallenge1).to.exist; | ||
let foundChallenge2 = _.find(challenges, { _id: challenge2._id }); | ||
expect(foundChallenge2).to.exist; | ||
}); | ||
}); | ||
|
||
context('Private Guild', () => { | ||
let privateGuild, user, nonMember, challenge, challenge2; | ||
|
||
before(async () => { | ||
let { group, groupLeader } = await createAndPopulateGroup({ | ||
groupDetails: { | ||
name: 'TestPrivateGuild', | ||
type: 'guild', | ||
privacy: 'private', | ||
}, | ||
}); | ||
|
||
privateGuild = group; | ||
user = groupLeader; | ||
|
||
nonMember = await generateUser(); | ||
|
||
challenge = await generateChallenge(user, group); | ||
challenge2 = await generateChallenge(user, group); | ||
}); | ||
|
||
it('should prevent non-member from seeing challenges', async () => { | ||
await expect(nonMember.get(`/challenges/groups/${privateGuild._id}`)) | ||
.to.eventually.be.rejected.and.eql({ | ||
code: 404, | ||
error: 'NotFound', | ||
message: t('groupNotFound'), | ||
}); | ||
}); | ||
|
||
it('should return group challenges for member', async () => { | ||
let challenges = await user.get(`/challenges/groups/${privateGuild._id}`); | ||
|
||
let foundChallenge1 = _.find(challenges, { _id: challenge._id }); | ||
expect(foundChallenge1).to.exist; | ||
let foundChallenge2 = _.find(challenges, { _id: challenge2._id }); | ||
expect(foundChallenge2).to.exist; | ||
}); | ||
}); | ||
}); |
72 changes: 72 additions & 0 deletions
72
test/api/v3/integration/challenges/GET-challenges_user.test.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
import { | ||
generateUser, | ||
generateChallenge, | ||
createAndPopulateGroup, | ||
} from '../../../../helpers/api-v3-integration.helper'; | ||
|
||
describe('GET challenges/user', () => { | ||
let user, member, nonMember, challenge, challenge2; | ||
|
||
before(async () => { | ||
let { group, groupLeader, members } = await createAndPopulateGroup({ | ||
groupDetails: { | ||
name: 'TestGuild', | ||
type: 'guild', | ||
privacy: 'public', | ||
}, | ||
members: 1, | ||
}); | ||
|
||
user = groupLeader; | ||
|
||
member = members[0]; | ||
nonMember = await generateUser(); | ||
|
||
challenge = await generateChallenge(user, group); | ||
challenge2 = await generateChallenge(user, group); | ||
}); | ||
|
||
it('should return challenges user has joined', async () => { | ||
await nonMember.post(`/challenges/${challenge._id}/join`); | ||
|
||
let challenges = await nonMember.get(`/challenges/user`); | ||
|
||
let foundChallenge = _.find(challenges, { _id: challenge._id }); | ||
expect(foundChallenge).to.exist; | ||
}); | ||
|
||
it('should return challenges user has created', async () => { | ||
let challenges = await user.get(`/challenges/user`); | ||
|
||
let foundChallenge1 = _.find(challenges, { _id: challenge._id }); | ||
expect(foundChallenge1).to.exist; | ||
let foundChallenge2 = _.find(challenges, { _id: challenge2._id }); | ||
expect(foundChallenge2).to.exist; | ||
}); | ||
|
||
it('should return challenges in user\'s group', async () => { | ||
let challenges = await member.get(`/challenges/user`); | ||
|
||
let foundChallenge1 = _.find(challenges, { _id: challenge._id }); | ||
expect(foundChallenge1).to.exist; | ||
let foundChallenge2 = _.find(challenges, { _id: challenge2._id }); | ||
expect(foundChallenge2).to.exist; | ||
}); | ||
|
||
it('should not return challenges user doesn\'t have access to', async () => { | ||
let { group, groupLeader } = await createAndPopulateGroup({ | ||
groupDetails: { | ||
name: 'TestPrivateGuild', | ||
type: 'guild', | ||
privacy: 'private', | ||
}, | ||
}); | ||
|
||
let privateChallenge = await generateChallenge(groupLeader, group); | ||
|
||
let challenges = await nonMember.get(`/challenges/user`); | ||
|
||
let foundChallenge = _.find(challenges, { _id: privateChallenge._id }); | ||
expect(foundChallenge).to.not.exist; | ||
}); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters