diff --git a/core/classifier-jobs/summary-classification.int.test.js b/core/classifier-jobs/summary-classification.int.test.js index 4794c66e3..4b13ca347 100644 --- a/core/classifier-jobs/summary-classification.int.test.js +++ b/core/classifier-jobs/summary-classification.int.test.js @@ -103,9 +103,33 @@ describe('GET /classifier-jobs/{id}/summary/{value}', () => { expect(response.body.unreviewed).toEqual(0) }) - test.todo('returns 404 on invalid classifier id') + test('returns 404 on invalid classifier id', async () => { + await models.ClassifierJobSummary.bulkCreate([ + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_1.id, total: 1, confirmed: 1, rejected: 0, uncertain: 0 }, + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_2.id, total: 1, confirmed: 0, rejected: 1, uncertain: 0 }, + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_3.id, total: 1, confirmed: 0, rejected: 0, uncertain: 1 }, + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_4.id, total: 0, confirmed: 0, rejected: 0, uncertain: 0 }, + { classifierJobId: JOB_2.id, classificationId: CLASSIFICATION_1.id, total: 1, confirmed: 1, rejected: 0, uncertain: 1 } + ]) - test.todo('returns 404 on classification value outside the classifier') + const response = await request(app).get(`/1928943/summary/${CLASSIFICATION_2.id}`) - test.todo('returns 404 on classification value that does not have any value') + expect(response.statusCode).toEqual(404) + expect(response.body.message).toEqual('Classifier job or classification value in the job cannot be found.') + }) + + test('returns 404 on classification value outside the classifier', async () => { + await models.ClassifierJobSummary.bulkCreate([ + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_1.id, total: 1, confirmed: 1, rejected: 0, uncertain: 0 }, + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_2.id, total: 1, confirmed: 0, rejected: 1, uncertain: 0 }, + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_3.id, total: 1, confirmed: 0, rejected: 0, uncertain: 1 }, + { classifierJobId: JOB_1.id, classificationId: CLASSIFICATION_4.id, total: 0, confirmed: 0, rejected: 0, uncertain: 0 }, + { classifierJobId: JOB_2.id, classificationId: CLASSIFICATION_1.id, total: 1, confirmed: 1, rejected: 0, uncertain: 1 } + ]) + + const response = await request(app).get(`/${JOB_2.id}/summary/${CLASSIFICATION_4.id}`) + + expect(response.statusCode).toEqual(404) + expect(response.body.message).toEqual('Classifier job or classification value in the job cannot be found.') + }) }) diff --git a/core/classifier-jobs/summary-classification.js b/core/classifier-jobs/summary-classification.js index 1751c226b..c52054ccf 100644 --- a/core/classifier-jobs/summary-classification.js +++ b/core/classifier-jobs/summary-classification.js @@ -36,6 +36,8 @@ const { getSummary } = require('./bl/summary') * description: Insufficient priviledges * 404: * description: Classifier job not found or classification value not found. + * 5XX: + * description: Other unrecoverable errors. * */ module.exports = async (req, res) => { @@ -45,7 +47,7 @@ module.exports = async (req, res) => { try { const result = await getSummary(req.params.id, { classificationValue: req.params.value }, { readableBy }) if (result.total === 0 || result.results.classificationsSummary.length === 0) { - throw EmptyResultError('Classifier job summary with given `value` not found.') + throw new EmptyResultError('Classifier job or classification value in the job cannot be found.') } return res.json(result.results.classificationsSummary[0]) } catch (e) {