mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 07:07:35 +01:00
Added initial get challenge task by id
This commit is contained in:
@@ -0,0 +1,66 @@
|
|||||||
|
import {
|
||||||
|
generateUser,
|
||||||
|
generateGroup,
|
||||||
|
generateChallenge,
|
||||||
|
translate as t,
|
||||||
|
} from '../../../../../helpers/api-integration/v3';
|
||||||
|
import { each } from 'lodash';
|
||||||
|
|
||||||
|
describe('GET /tasks/:taskId', () => {
|
||||||
|
let user;
|
||||||
|
let guild;
|
||||||
|
let challenge;
|
||||||
|
let task;
|
||||||
|
let tasksToTest = {
|
||||||
|
habit: {
|
||||||
|
text: 'test habit',
|
||||||
|
type: 'habit',
|
||||||
|
up: false,
|
||||||
|
down: true,
|
||||||
|
},
|
||||||
|
todo: {
|
||||||
|
text: 'test todo',
|
||||||
|
type: 'todo',
|
||||||
|
},
|
||||||
|
daily: {
|
||||||
|
text: 'test daily',
|
||||||
|
type: 'daily',
|
||||||
|
frequency: 'daily',
|
||||||
|
everyX: 5,
|
||||||
|
startDate: new Date(),
|
||||||
|
},
|
||||||
|
reward: {
|
||||||
|
text: 'test reward',
|
||||||
|
type: 'reward',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
before(async () => {
|
||||||
|
user = await generateUser();
|
||||||
|
guild = await generateGroup(user);
|
||||||
|
challenge = await generateChallenge(user, guild);
|
||||||
|
});
|
||||||
|
|
||||||
|
each(tasksToTest, (taskValue, taskType) => {
|
||||||
|
context(`${taskType}`, () => {
|
||||||
|
before(async () => {
|
||||||
|
task = await user.post(`/tasks/challenge/${challenge._id}`, taskValue);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('gets challenge task', async () => {
|
||||||
|
let getTask = await user.get(`/tasks/${task._id}`);
|
||||||
|
expect(getTask).to.eql(task);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('returns error when user is not a member of the challenge', async () => {
|
||||||
|
let anotherUser = await generateUser();
|
||||||
|
|
||||||
|
await expect(anotherUser.get(`/tasks/${task._id}`)).to.eventually.be.rejected.and.eql({
|
||||||
|
code: 404,
|
||||||
|
error: 'NotFound',
|
||||||
|
message: t('taskNotFound'),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -257,7 +257,7 @@ api.getTask = {
|
|||||||
if (!task) {
|
if (!task) {
|
||||||
throw new NotFound(res.t('taskNotFound'));
|
throw new NotFound(res.t('taskNotFound'));
|
||||||
} else if (!task.userId) { // If the task belongs to a challenge make sure the user has rights
|
} else if (!task.userId) { // If the task belongs to a challenge make sure the user has rights
|
||||||
let challenge = await Challenge.find().selec({_id: task.challenge.id}).select('leader').exec();
|
let challenge = await Challenge.find({_id: task.challenge.id}).select('leader').exec();
|
||||||
if (!challenge || (user.challenges.indexOf(task.challenge.id) === -1 && challenge.leader !== user._id && !user.contributor.admin)) { // eslint-disable-line no-extra-parens
|
if (!challenge || (user.challenges.indexOf(task.challenge.id) === -1 && challenge.leader !== user._id && !user.contributor.admin)) { // eslint-disable-line no-extra-parens
|
||||||
throw new NotFound(res.t('taskNotFound'));
|
throw new NotFound(res.t('taskNotFound'));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user