From 75a0d2ac273c57097f93727d506dcc36b2d0762b Mon Sep 17 00:00:00 2001
From: Tania Fecheta <tania.fecheta@thinslices.com>
Date: Fri, 9 Nov 2018 10:24:30 +0200
Subject: [PATCH] fix(fragmentsRecommendations): reviewers cannot write a
 review on an older version

---
 .../routes/fragmentsRecommendations/post.js   |  9 ++++++++
 .../fragmentsRecommendations/post.test.js     | 23 +++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js
index 43206e0e1..c0301c0d5 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 867d1ed0d..05ae4193c 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
-- 
GitLab