diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js index 43206e0e19c9bb85290713f5eb829d04dd700df6..c0301c0d5162d064f9b89c3fc660f1d745562b3f 100644 --- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js +++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js @@ -78,6 +78,15 @@ module.exports = models => async (req, res) => { .json({ error: 'Cannot make a recommendation on an older version.' }) } + if ( + recommendationType === recommendations.type.review && + last(collection.fragments) !== fragmentId + ) { + return res + .status(400) + .json({ error: 'Cannot write a review on an older version.' }) + } + if ( recommendation === recommendations.publish && recommendationType === recommendations.type.editor && 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 867d1ed0d05986fd03e389da064d08e4a19dfc77..05ae4193c249185b9c160ed1a1c74cbba2fbbf72 100644 --- a/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/post.test.js +++ b/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/post.test.js @@ -384,6 +384,29 @@ describe('Post fragments recommendations route handler', () => { 'Cannot make a recommendation on an older version.', ) }) + it('should return an error when a reviewer writes a review on an older version of a manuscript', async () => { + const { reviewer } = testFixtures.users + const { twoVersionsCollection } = testFixtures.collections + const { fragment } = testFixtures.fragments + body.recommendationType = 'review' + + const res = await requests.sendRequest({ + body, + userId: reviewer.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 write a review 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