diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js index 28ef9ffcd5708f36094bbaddc54c7c37b5730b85..43206e0e19c9bb85290713f5eb829d04dd700df6 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 7ea43a34dd81e851e260393abcead2e4dd03462e..867d1ed0d05986fd03e389da064d08e4a19dfc77 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.', + ) + }) })