From 2b7014a5c00af5b845179835156e4abc9ac131df Mon Sep 17 00:00:00 2001 From: Sebastian Mihalache <sebastian.mihalache@gmail.con> Date: Wed, 26 Sep 2018 16:26:35 +0300 Subject: [PATCH] fix(invite): remove reviewer from teams --- .../routes/fragmentsInvitations/decline.js | 20 ++++++++++++++++ .../src/routes/fragmentsInvitations/patch.js | 23 +++++++++++++++++++ .../tests/fragmentsInvitations/patch.test.js | 1 + 3 files changed, 44 insertions(+) diff --git a/packages/component-invite/src/routes/fragmentsInvitations/decline.js b/packages/component-invite/src/routes/fragmentsInvitations/decline.js index 6d6613446..8d7e5d975 100644 --- a/packages/component-invite/src/routes/fragmentsInvitations/decline.js +++ b/packages/component-invite/src/routes/fragmentsInvitations/decline.js @@ -1,4 +1,5 @@ const { + Team, services, Invitation, authsome: authsomeHelper, @@ -73,6 +74,25 @@ module.exports = models => async (req, res) => { const baseUrl = services.getBaseUrl(req) + const teamHelper = new Team({ + fragmentId, + collectionId, + TeamModel: models.Team, + }) + + const reviewerTeam = await teamHelper.getTeam({ + role: 'reviewer', + objectType: 'fragment', + }) + + await teamHelper.removeTeamMember({ + teamId: reviewerTeam.id, + userId: user.id, + }) + + user.teams = user.teams.filter(userTeamId => reviewerTeam.id !== userTeamId) + await user.save() + notifications.sendNotifications({ baseUrl, fragment, diff --git a/packages/component-invite/src/routes/fragmentsInvitations/patch.js b/packages/component-invite/src/routes/fragmentsInvitations/patch.js index b6bda8da6..20d059bcb 100644 --- a/packages/component-invite/src/routes/fragmentsInvitations/patch.js +++ b/packages/component-invite/src/routes/fragmentsInvitations/patch.js @@ -1,4 +1,5 @@ const { + Team, services, Collection, Invitation, @@ -61,10 +62,32 @@ module.exports = models => async (req, res) => { fragment.save() } else { if (reason) invitation.reason = reason + await fragment.save() collectionHelper.updateStatusByNumberOfReviewers({ invitations: fragment.invitations, }) + + const teamHelper = new Team({ + fragmentId, + collectionId, + TeamModel: models.Team, + }) + + const reviewerTeam = await teamHelper.getTeam({ + role: 'reviewer', + objectType: 'fragment', + }) + + await teamHelper.removeTeamMember({ + teamId: reviewerTeam.id, + userId: user.id, + }) + + user.teams = user.teams.filter( + userTeamId => reviewerTeam.id !== userTeamId, + ) + await user.save() } notifications.sendNotifications({ diff --git a/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js b/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js index 8ce62849a..15d6f7a45 100644 --- a/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js +++ b/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js @@ -62,6 +62,7 @@ describe('Patch fragments invitations route handler', () => { await require(patchPath)(models)(req, res) expect(res.statusCode).toBe(200) + expect(reviewer.teams).toHaveLength(0) }) it('should return an error if the collection does not exist', async () => { const { handlingEditor } = testFixtures.users -- GitLab