From afbdb0c3de0dcd67ca32345f16d5adc8e402efd2 Mon Sep 17 00:00:00 2001 From: Sebastian Mihalache <sebi.mihalache@gmail.com> Date: Tue, 30 Oct 2018 09:46:44 +0200 Subject: [PATCH] fix(manuscript-manager): add check for EiC decision on older versions --- .../routes/fragmentsRecommendations/post.js | 21 ++++++++------- .../fragmentsRecommendations/post.test.js | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+), 10 deletions(-) diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js index 28ef9ffcd..43206e0e1 100644 --- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js +++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js @@ -70,25 +70,26 @@ module.exports = models => async (req, res) => { }) if ( + recommendationType === recommendations.type.editor && + last(collection.fragments) !== fragmentId + ) { + return res + .status(400) + .json({ error: 'Cannot make a recommendation on an older version.' }) + } + + if ( + recommendation === recommendations.publish && recommendationType === recommendations.type.editor && collection.handlingEditor && collection.handlingEditor.id === req.user ) { const fragmentHelper = new Fragment({ fragment }) - if ( - recommendation === recommendations.publish && - !fragmentHelper.hasReviewReport() - ) { + if (!fragmentHelper.hasReviewReport()) { return res .status(400) .json({ error: 'Cannot publish without at least one reviewer report.' }) } - - if (last(collection.fragments) !== fragmentId) { - return res - .status(400) - .json({ error: 'Cannot make a recommendation on an older version.' }) - } } fragment.recommendations = fragment.recommendations || [] diff --git a/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/post.test.js b/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/post.test.js index 7ea43a34d..867d1ed0d 100644 --- a/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/post.test.js +++ b/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/post.test.js @@ -384,4 +384,31 @@ describe('Post fragments recommendations route handler', () => { 'Cannot make a recommendation on an older version.', ) }) + + it('should return an error when an EiC makes a decision on an older version of a manuscript', async () => { + const { editorInChief } = testFixtures.users + const { twoVersionsCollection } = testFixtures.collections + const { fragment } = testFixtures.fragments + body.recommendation = 'publish' + body.recommendationType = 'editorRecommendation' + + const res = await requests.sendRequest({ + body, + userId: editorInChief.id, + models, + route, + path, + params: { + collectionId: twoVersionsCollection.id, + fragmentId: fragment.id, + }, + }) + + expect(res.statusCode).toBe(400) + const data = JSON.parse(res._getData()) + + expect(data.error).toEqual( + 'Cannot make a recommendation on an older version.', + ) + }) }) -- GitLab