From 4f4d72ebac15e6452cadfa6e3665df620fed9619 Mon Sep 17 00:00:00 2001
From: Sebastian <sebastian.mihalache@thinslices.com>
Date: Wed, 28 Mar 2018 13:39:28 +0300
Subject: [PATCH] feat(component-invite): fix bug when inviting declining HE

---
 .../src/controllers/assignCollectionRole.js   | 14 ++++++++----
 .../src/tests/fixtures/users.js               |  2 +-
 .../src/tests/postInvite.test.js              | 22 ++++++++++++++++++-
 3 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/packages/component-invite/src/controllers/assignCollectionRole.js b/packages/component-invite/src/controllers/assignCollectionRole.js
index cd855f622..febc1a393 100644
--- a/packages/component-invite/src/controllers/assignCollectionRole.js
+++ b/packages/component-invite/src/controllers/assignCollectionRole.js
@@ -76,10 +76,16 @@ module.exports = async (
       )
       await collHelper.addAssignedPeople(collection, user, role)
     } else {
-      const matchingInvitation = inviteHelper.getMatchingInvitation(
-        user.invitations,
-        collectionId,
-        role,
+      // const matchingInvitation = inviteHelper.getMatchingInvitation(
+      //   user.invitations,
+      //   collectionId,
+      //   role,
+      // )
+      const matchingInvitation = user.invitations.find(
+        invitation =>
+          invitation.collectionId === collectionId &&
+          invitation.role === role &&
+          invitation.hasAnswer === false,
       )
       if (matchingInvitation === undefined) {
         user = await inviteHelper.setupInvitation(
diff --git a/packages/component-invite/src/tests/fixtures/users.js b/packages/component-invite/src/tests/fixtures/users.js
index c1542563f..b2df44368 100644
--- a/packages/component-invite/src/tests/fixtures/users.js
+++ b/packages/component-invite/src/tests/fixtures/users.js
@@ -111,7 +111,7 @@ const users = {
       },
     ],
     teams: [heTeamID],
-    save: jest.fn(() => users.handlingEditor),
+    save: jest.fn(() => users.invitedHandlingEditor),
     editorInChief: false,
   },
 }
diff --git a/packages/component-invite/src/tests/postInvite.test.js b/packages/component-invite/src/tests/postInvite.test.js
index 509b35539..76720c1e3 100644
--- a/packages/component-invite/src/tests/postInvite.test.js
+++ b/packages/component-invite/src/tests/postInvite.test.js
@@ -219,6 +219,26 @@ describe('Post invite route handler', () => {
     const data = JSON.parse(res._getData())
     expect(data.email).toEqual(body.email)
     expect(data.invitations[0].collectionId).toEqual(req.params.collectionId)
-    expect(data.invitations).toHaveLength(1)
+  })
+  it('should return success when the EiC invites the a HE after he declined an invitation', async () => {
+    const body = {
+      email: invitedHandlingEditor.email,
+      role: 'handlingEditor',
+    }
+    const req = httpMocks.createRequest({
+      body,
+    })
+    req.user = editorInChief.id
+    req.params.collectionId = standardCollection.id
+    const initialSize = invitedHandlingEditor.invitations.length
+    const res = httpMocks.createResponse()
+    await require(postInvitePath)(models)(req, res)
+
+    expect(res.statusCode).toBe(200)
+    const data = JSON.parse(res._getData())
+    expect(data.email).toEqual(body.email)
+    expect(invitedHandlingEditor.invitations.length).toBeGreaterThan(
+      initialSize,
+    )
   })
 })
-- 
GitLab