diff --git a/test/api/v3/integration/challenges/POST_challenges_id_clone.test.js b/test/api/v3/integration/challenges/POST_challenges_id_clone.test.js new file mode 100644 index 0000000000..04e12049cd --- /dev/null +++ b/test/api/v3/integration/challenges/POST_challenges_id_clone.test.js @@ -0,0 +1,43 @@ +import { + generateUser, + generateGroup, +} from '../../../../helpers/api-v3-integration.helper'; + +describe('POST /challenges/:challengeId/clone', () => { + it('clones a challenge', async () => { + const user = await generateUser({balance: 10}); + const group = await generateGroup(user); + + const name = 'Test Challenge'; + const shortName = 'TC Label'; + const description = 'Test Description'; + const prize = 1; + + const challenge = await user.post('/challenges', { + group: group._id, + name, + shortName, + description, + prize, + }); + const challengeTask = await user.post(`/tasks/challenge/${challenge._id}`, { + text: 'test habit', + type: 'habit', + up: false, + down: true, + notes: 1976, + }); + + const cloneChallengeResponse = await user.post(`/challenges/${challenge._id}/clone`, { + group: group._id, + name: `${name} cloned`, + shortName, + description, + prize, + }); + + expect(cloneChallengeResponse.clonedTasks[0].text).to.eql(challengeTask.text); + expect(cloneChallengeResponse.clonedTasks[0]._id).to.not.eql(challengeTask._id); + expect(cloneChallengeResponse.clonedTasks[0].challenge.id).to.eql(cloneChallengeResponse.clonedChallenge._id); + }); +}); diff --git a/website/client/components/challenges/challengeDetail.vue b/website/client/components/challenges/challengeDetail.vue index 01f07bcb6d..efa05268ae 100644 --- a/website/client/components/challenges/challengeDetail.vue +++ b/website/client/components/challenges/challengeDetail.vue @@ -1,6 +1,6 @@