From 5e2bfc2c2fdfbc784068612a4232dd10e3d4a753 Mon Sep 17 00:00:00 2001 From: negue Date: Fri, 26 Jun 2020 19:05:41 +0200 Subject: [PATCH] added tests: if collapseChecklist is allowed and all others are still blocked (#12337) * tests: test if collapseChecklist is allowed and all others are still blocked * fix lint --- .../tasks/groups/PUT-group_task_id.test.js | 74 ++++++++++++++----- 1 file changed, 57 insertions(+), 17 deletions(-) diff --git a/test/api/v3/integration/tasks/groups/PUT-group_task_id.test.js b/test/api/v3/integration/tasks/groups/PUT-group_task_id.test.js index d7a193c025..83972c891e 100644 --- a/test/api/v3/integration/tasks/groups/PUT-group_task_id.test.js +++ b/test/api/v3/integration/tasks/groups/PUT-group_task_id.test.js @@ -4,8 +4,12 @@ import { } from '../../../../../helpers/api-integration/v3'; describe('PUT /tasks/:id', () => { - let user; let guild; let member; let member2; let - task; + let user; + let guild; + let member; + let member2; + let habit; + let todo; function findAssignedTask (memberTask) { return memberTask.group.id === guild._id; @@ -25,7 +29,7 @@ describe('PUT /tasks/:id', () => { member = members[0]; // eslint-disable-line prefer-destructuring member2 = members[1]; // eslint-disable-line prefer-destructuring - task = await user.post(`/tasks/group/${guild._id}`, { + habit = await user.post(`/tasks/group/${guild._id}`, { text: 'test habit', type: 'habit', up: false, @@ -33,12 +37,18 @@ describe('PUT /tasks/:id', () => { notes: 1976, }); - await user.post(`/tasks/${task._id}/assign/${member._id}`); - await user.post(`/tasks/${task._id}/assign/${member2._id}`); + todo = await user.post(`/tasks/group/${guild._id}`, { + text: 'test todo', + type: 'todo', + notes: 1976, + }); + + await user.post(`/tasks/${habit._id}/assign/${member._id}`); + await user.post(`/tasks/${habit._id}/assign/${member2._id}`); }); it('updates a group task', async () => { - const savedHabit = await user.put(`/tasks/${task._id}`, { + const savedHabit = await user.put(`/tasks/${habit._id}`, { notes: 'some new notes', }); @@ -51,14 +61,14 @@ describe('PUT /tasks/:id', () => { managerId: member._id, }); - // change the todo - task = await member.put(`/tasks/${task._id}`, { + // change the habit + habit = await member.put(`/tasks/${habit._id}`, { text: 'new text!', requiresApproval: true, }); const memberTasks = await member2.get('/tasks/user'); - const syncedTask = find(memberTasks, memberTask => memberTask.group.taskId === task._id); + const syncedTask = find(memberTasks, memberTask => memberTask.group.taskId === habit._id); // score up to trigger approval await expect(member2.post(`/tasks/${syncedTask._id}/score/up`)) @@ -69,9 +79,39 @@ describe('PUT /tasks/:id', () => { }); }); + it('member updates a group task value - not allowed', async () => { + // change the todo + await expect(member.put(`/tasks/${habit._id}`, { + text: 'new text!', + })).to.eventually.be.rejected.and.to.eql({ + code: 401, + error: 'NotAuthorized', + message: t('onlyGroupLeaderCanEditTasks'), + }); + }); + + it('member updates the collapseChecklist property - change is allowed', async () => { + // change the todo + await member.put(`/tasks/${todo._id}`, { + collapseChecklist: true, + }); + }); + + it('member updates the collapseChecklist and another property - change not allowed', async () => { + // change the todo + await expect(member.put(`/tasks/${todo._id}`, { + collapseChecklist: true, + title: 'test', + })).to.eventually.be.rejected.and.to.eql({ + code: 401, + error: 'NotAuthorized', + message: t('onlyGroupLeaderCanEditTasks'), + }); + }); + it('updates a group task with checklist', async () => { // add a new todo - task = await user.post(`/tasks/group/${guild._id}`, { + habit = await user.post(`/tasks/group/${guild._id}`, { text: 'todo', type: 'todo', checklist: [ @@ -81,13 +121,13 @@ describe('PUT /tasks/:id', () => { ], }); - await user.post(`/tasks/${task._id}/assign/${member._id}`); + await user.post(`/tasks/${habit._id}/assign/${member._id}`); // change the checklist text - task = await user.put(`/tasks/${task._id}`, { + habit = await user.put(`/tasks/${habit._id}`, { checklist: [ { - id: task.checklist[0].id, + id: habit.checklist[0].id, text: 'checklist 1 - edit', }, { @@ -96,11 +136,11 @@ describe('PUT /tasks/:id', () => { ], }); - expect(task.checklist.length).to.eql(2); + expect(habit.checklist.length).to.eql(2); }); it('updates the linked tasks', async () => { - await user.put(`/tasks/${task._id}`, { + await user.put(`/tasks/${habit._id}`, { text: 'some new text', up: false, down: false, @@ -117,7 +157,7 @@ describe('PUT /tasks/:id', () => { }); it('updates the linked tasks for all assigned users', async () => { - await user.put(`/tasks/${task._id}`, { + await user.put(`/tasks/${habit._id}`, { text: 'some new text', up: false, down: false, @@ -144,7 +184,7 @@ describe('PUT /tasks/:id', () => { managerId: member2._id, }); - await member2.put(`/tasks/${task._id}`, { + await member2.put(`/tasks/${habit._id}`, { text: 'some new text', up: false, down: false,