From 5a9d123c98551d29e9043116ea31b09009d5cd5e Mon Sep 17 00:00:00 2001 From: Sebastian <sebastian.mihalache@thinslices.com> Date: Thu, 19 Apr 2018 16:37:38 +0300 Subject: [PATCH] feat(component-invite): decline rev --- .../routes/collectionsInvitations/patch.js | 10 +++++----- .../tests/collectionsInvitations/get.test.js | 2 +- .../collectionsInvitations/patch.test.js | 20 ++++++++++++++++++- .../src/tests/fixtures/teamIDs.js | 2 ++ .../src/tests/fixtures/teams.js | 20 +++++++++++++++++-- .../src/tests/fixtures/users.js | 3 ++- 6 files changed, 47 insertions(+), 10 deletions(-) diff --git a/packages/component-invite/src/routes/collectionsInvitations/patch.js b/packages/component-invite/src/routes/collectionsInvitations/patch.js index dcfde76b4..5aa66887e 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/patch.js +++ b/packages/component-invite/src/routes/collectionsInvitations/patch.js @@ -41,11 +41,11 @@ module.exports = models => async (req, res) => { invitation.timestamp = Date.now() invitation.hasAnswer = true const eic = await userHelper.getEditorInChief(models.User) + let toEmail = eic.email + if (invitation.role === 'reviewer') + toEmail = collection.handlingEditor.email if (isAccepted === true) { invitation.isAccepted = true - let toEmail = eic.email - if (invitation.role === 'reviewer') - toEmail = collection.handlingEditor.email await collection.save() try { await mailService.setupAgreeEmail( @@ -75,9 +75,9 @@ module.exports = models => async (req, res) => { } try { await mailService.setupDeclineEmail( - eic.email, + toEmail, user, - 'handling-editor-declined', + 'decline', collection.customId, reason, ) diff --git a/packages/component-invite/src/tests/collectionsInvitations/get.test.js b/packages/component-invite/src/tests/collectionsInvitations/get.test.js index 7d64dcf8b..b92e412bf 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/get.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/get.test.js @@ -79,7 +79,7 @@ describe('Get collection invitations route handler', () => { const { collection } = testFixtures.collections const req = httpMocks.createRequest() req.query = { - role: 'reviewer', + role: 'author', userId: handlingEditor.id, } delete collection.invitations diff --git a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js index a9f7a6258..2f1600567 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js @@ -50,7 +50,7 @@ describe('Patch collections invitations route handler', () => { req.user = reviewer.id req.params.collectionId = collection.id const reviewerInv = collection.invitations.find( - inv => inv.role === 'reviewer', + inv => inv.role === 'reviewer' && inv.hasAnswer === false, ) req.params.invitationId = reviewerInv.id const res = httpMocks.createResponse() @@ -75,6 +75,24 @@ describe('Patch collections invitations route handler', () => { expect(res.statusCode).toBe(200) }) + it('should return success when the reviewer declines work on a collection', async () => { + const { reviewer } = testFixtures.users + const { collection } = testFixtures.collections + body.isAccepted = false + const req = httpMocks.createRequest({ + body, + }) + req.user = reviewer.id + req.params.collectionId = collection.id + const inv = collection.invitations.find( + inv => inv.role === 'reviewer' && inv.hasAnswer === false, + ) + req.params.invitationId = inv.id + const res = httpMocks.createResponse() + await require(patchPath)(models)(req, res) + + expect(res.statusCode).toBe(200) + }) it('should return an error params are missing', async () => { const { handlingEditor } = testFixtures.users const { collection } = testFixtures.collections diff --git a/packages/component-invite/src/tests/fixtures/teamIDs.js b/packages/component-invite/src/tests/fixtures/teamIDs.js index 0f525dd4a..607fd6661 100644 --- a/packages/component-invite/src/tests/fixtures/teamIDs.js +++ b/packages/component-invite/src/tests/fixtures/teamIDs.js @@ -2,7 +2,9 @@ const Chance = require('chance') const chance = new Chance() const heID = chance.guid() +const revId = chance.guid() module.exports = { heTeamID: heID, + revTeamID: revId, } diff --git a/packages/component-invite/src/tests/fixtures/teams.js b/packages/component-invite/src/tests/fixtures/teams.js index ad1baa826..7e4611da3 100644 --- a/packages/component-invite/src/tests/fixtures/teams.js +++ b/packages/component-invite/src/tests/fixtures/teams.js @@ -1,9 +1,9 @@ const users = require('./users') const collections = require('./collections') -const { heTeamID } = require('./teamIDs') +const { heTeamID, revTeamID } = require('./teamIDs') const { collection } = collections -const { handlingEditor } = users +const { handlingEditor, reviewer } = users const teams = { heTeam: { teamType: { @@ -21,5 +21,21 @@ const teams = { updateProperties: jest.fn(() => teams.heTeam), id: heTeamID, }, + revTeam: { + teamType: { + name: 'reviewer', + permissions: 'reviewer', + }, + group: 'reviewer', + name: 'reviewer', + object: { + type: 'collection', + id: collection.id, + }, + members: [reviewer.id], + save: jest.fn(() => teams.revTeam), + updateProperties: jest.fn(() => teams.revTeam), + id: revTeamID, + }, } module.exports = teams diff --git a/packages/component-invite/src/tests/fixtures/users.js b/packages/component-invite/src/tests/fixtures/users.js index c474cfc7a..5df78f7e0 100644 --- a/packages/component-invite/src/tests/fixtures/users.js +++ b/packages/component-invite/src/tests/fixtures/users.js @@ -1,4 +1,4 @@ -const { heTeamID } = require('./teamIDs') +const { heTeamID, revTeamID } = require('./teamIDs') const { handlingEditor, user, admin, author, reviewer } = require('./userData') const Chance = require('chance') @@ -86,6 +86,7 @@ const users = { title: 'Mr', save: jest.fn(() => users.reviewer), isConfirmed: true, + teams: [revTeamID], }, } -- GitLab