it('create challenge - invalid legacyId', async () => { const challengeData = _.cloneDeep(testChallengeData) challengeData.legacyId = -1 const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send(challengeData) should.equal(response.status, 400) should.equal(response.body.message, '"legacyId" must be a positive number') })
it('partially update phase - name already used', async () => { const response = await chai.request(app) .patch(`${basePath}/${id2}`) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ name }) should.equal(response.status, 409) should.equal(response.body.message, `Phase with name: ${name} already exist`) })
it('create challenge - invalid forumId', async () => { const challengeData = _.cloneDeep(testChallengeData) challengeData.legacy.forumId = -1 const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send(challengeData) should.equal(response.status, 400) should.equal(response.body.message, '"forumId" must be a positive number') })
it('create challenge type timeline template - invalid timelineTemplateId', async () => { const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ typeId: type.id, timelineTemplateId: [1] }) should.equal(response.status, 400) should.equal(response.body.message, '"timelineTemplateId" must be a string') })
it('create challenge type timeline template - already defined', async () => { const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ typeId: type.id, timelineTemplateId: timelineTemplate.id }) should.equal(response.status, 409) should.equal(response.body.message, 'The challenge type timeline template is already defined.') })
it('create challenge - missing name', async () => { const challengeData = _.cloneDeep(testChallengeData) delete challengeData.name const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send(challengeData) should.equal(response.status, 400) should.equal(response.body.message, '"name" is required') })
it('fully update phase - name already used', async () => { const response = await chai.request(app) .put(`${basePath}/${id2}`) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ name, description: 'desc', isOpen: false, duration: 456 }) should.equal(response.status, 409) should.equal(response.body.message, `Phase with name: ${name} already exist`) })
it('create challenge type - invalid name', async () => { const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ name: ['xx'], description: 'desc', isActive: false, abbreviation: 'abb' }) should.equal(response.status, 400) should.equal(response.body.message, '"name" must be a string') })
it('create challenge - invalid start date', async () => { const challengeData = _.cloneDeep(testChallengeData) challengeData.startDate = 'abc' const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send(challengeData) should.equal(response.status, 400) should.equal(response.body.message, '"startDate" must be a number of milliseconds or valid date string') })
it('create challenge - invalid track', async () => { const challengeData = _.cloneDeep(testChallengeData) challengeData.legacy.track = [1, 2] const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send(challengeData) should.equal(response.status, 400) should.equal(response.body.message, '"track" must be a string') })
it('create challenge - invalid status', async () => { const challengeData = _.cloneDeep(testChallengeData) challengeData.status = 'invalid' const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send(challengeData) should.equal(response.status, 400) should.equal(response.body.message, '"status" must be one of [New, Draft, Cancelled, Active, Completed]') })
it('partially update challenge type - legacyId already used', async () => { const response = await chai.request(app) .patch(`${basePath}/${id2}`) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ legacyId }) should.equal(response.status, 409) should.equal(response.body.message, `ChallengeType with legacyId: ${legacyId} already exist`) })
it('create phase - name already used', async () => { const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ name, description: 'desc', isOpen: false, duration: 456 }) should.equal(response.status, 409) should.equal(response.body.message, `Phase with name: ${name} already exist`) })
it('create timeline template - invalid phases', async () => { const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send({ name, description: 'desc', isActive: true, phases: [{ defaultDuration: 123 }] }) should.equal(response.status, 400) should.equal(response.body.message, '"phaseId" is required') })
it('create challenge - invalid description', async () => { const challengeData = _.cloneDeep(testChallengeData) challengeData.description = [1, 2] const response = await chai.request(app) .post(basePath) .set('Authorization', `Bearer ${config.M2M_UPDATE_ACCESS_TOKEN}`) .send(challengeData) should.equal(response.status, 400) should.equal(response.body.message, '"description" must be a string') })