From eaadaee0e603e438a5ca3e066d127cbb05a15b2c Mon Sep 17 00:00:00 2001 From: Tania Fecheta <tania.fecheta@thinslices.com> Date: Tue, 20 Nov 2018 09:21:21 +0200 Subject: [PATCH] fix(fragmentsRecommendations): allow eic to make multiple decisions --- .../src/fixtures/fragments.js | 67 ++++++++++++++++++- .../routes/fragmentsRecommendations/post.js | 10 ++- .../src/tests/collections/get.test.js | 2 +- 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/packages/component-fixture-manager/src/fixtures/fragments.js b/packages/component-fixture-manager/src/fixtures/fragments.js index 48e7b41ce..15e4cb3fa 100644 --- a/packages/component-fixture-manager/src/fixtures/fragments.js +++ b/packages/component-fixture-manager/src/fixtures/fragments.js @@ -99,6 +99,69 @@ const fragments = { createdOn: chance.timestamp(), updatedOn: chance.timestamp(), }, + { + recommendation: 'publish', + recommendationType: 'editorRecommendation', + comments: [ + { + content: chance.paragraph(), + public: true, + files: [ + { + id: chance.guid(), + name: 'file.pdf', + size: chance.natural(), + }, + ], + }, + ], + id: chance.guid(), + userId: handlingEditor.id, + createdOn: 1542361074012, + updatedOn: chance.timestamp(), + }, + { + recommendation: 'return-to-handling-editor', + recommendationType: 'editorRecommendation', + comments: [ + { + content: chance.paragraph(), + public: true, + files: [ + { + id: chance.guid(), + name: 'file.pdf', + size: chance.natural(), + }, + ], + }, + ], + id: chance.guid(), + userId: admin.id, + createdOn: 1542361115749, + updatedOn: chance.timestamp(), + }, + { + recommendation: 'publish', + recommendationType: 'editorRecommendation', + comments: [ + { + content: chance.paragraph(), + public: chance.bool(), + files: [ + { + id: chance.guid(), + name: 'file.pdf', + size: chance.natural(), + }, + ], + }, + ], + id: chance.guid(), + userId: handlingEditor.id, + createdOn: 1542361115750, + updatedOn: chance.timestamp(), + }, { recommendation: 'publish', recommendationType: 'editorRecommendation', @@ -117,7 +180,7 @@ const fragments = { ], id: chance.guid(), userId: admin.id, - createdOn: chance.timestamp(), + createdOn: 1542361115751, updatedOn: chance.timestamp(), }, ], @@ -495,7 +558,7 @@ const fragments = { }, ], id: chance.guid(), - userId: handlingEditor.id, + userId: admin.id, createdOn: 1542361115749, updatedOn: chance.timestamp(), }, diff --git a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js index 41cf22755..b47234c1f 100644 --- a/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js +++ b/packages/component-manuscript-manager/src/routes/fragmentsRecommendations/post.js @@ -1,5 +1,5 @@ const uuid = require('uuid') -const { pick, get, set, has, isEmpty, last } = require('lodash') +const { pick, get, set, has, isEmpty, last, chain } = require('lodash') const config = require('config') const { v4 } = require('uuid') const logger = require('@pubsweet/logger') @@ -60,6 +60,11 @@ module.exports = models => async (req, res) => { [], ).filter(r => r.userId === req.user) + const lastFragmentRecommendation = chain(fragment) + .get('recommendations', []) + .last() + .value() + const authsome = authsomeHelper.getAuthsome(models) const target = { fragment, @@ -111,8 +116,7 @@ module.exports = models => async (req, res) => { recommendationType === recommendations.type.editor && isEditorInChief && recommendation !== recommendations.reject && - last(currentUserRecommendations).recommendation === - 'return-to-handling-editor' + lastFragmentRecommendation.recommendation === 'return-to-handling-editor' ) { return res.status(400).json({ error: 'Cannot make another recommendation on this version.', diff --git a/packages/component-manuscript-manager/src/tests/collections/get.test.js b/packages/component-manuscript-manager/src/tests/collections/get.test.js index fb88e5658..aa4a1cfec 100644 --- a/packages/component-manuscript-manager/src/tests/collections/get.test.js +++ b/packages/component-manuscript-manager/src/tests/collections/get.test.js @@ -61,7 +61,7 @@ describe('Get collections route handler', () => { expect(data).toHaveLength(2) expect(data[0].type).toEqual('collection') - expect(data[0].currentVersion.recommendations).toHaveLength(3) + expect(data[0].currentVersion.recommendations).toHaveLength(6) expect(data[0].currentVersion.authors[0]).not.toHaveProperty('email') }) -- GitLab