From c94273cef8548ca52f7c4e463b5999af2b83f54e Mon Sep 17 00:00:00 2001
From: Andrei Cioromila <andrei.cioromila@thinslices.com>
Date: Wed, 10 Oct 2018 16:27:41 +0300
Subject: [PATCH] test(fixtures): Properly link fixtures so all tests pass

---
 .../src/fixtures/collectionIDs.js             |  4 +--
 .../src/fixtures/collections.js               |  6 +++-
 .../src/fixtures/fragments.js                 | 11 +++---
 .../src/fixtures/teamIDs.js                   | 10 +++---
 .../src/fixtures/teams.js                     | 35 ++++++++++++++++---
 .../src/fixtures/users.js                     | 19 ++++++----
 .../tests/fragmentsInvitations/get.test.js    |  2 +-
 .../tests/fragmentsInvitations/patch.test.js  |  2 +-
 .../src/tests/collections/get.test.js         |  6 ++--
 .../fragmentsRecommendations/patch.test.js    |  6 ++--
 10 files changed, 69 insertions(+), 32 deletions(-)

diff --git a/packages/component-fixture-manager/src/fixtures/collectionIDs.js b/packages/component-fixture-manager/src/fixtures/collectionIDs.js
index 0633f816e..d4d27580e 100644
--- a/packages/component-fixture-manager/src/fixtures/collectionIDs.js
+++ b/packages/component-fixture-manager/src/fixtures/collectionIDs.js
@@ -1,8 +1,8 @@
 const Chance = require('chance')
 
 const chance = new Chance()
-const collId = chance.guid()
 
 module.exports = {
-  standardCollID: collId,
+  standardCollID: chance.guid(),
+  collectionReviewCompletedID: chance.guid(),
 }
diff --git a/packages/component-fixture-manager/src/fixtures/collections.js b/packages/component-fixture-manager/src/fixtures/collections.js
index fd83ed23b..4984c9f07 100644
--- a/packages/component-fixture-manager/src/fixtures/collections.js
+++ b/packages/component-fixture-manager/src/fixtures/collections.js
@@ -1,7 +1,10 @@
 const Chance = require('chance')
 const { user, handlingEditor, answerHE } = require('./userData')
 const { fragment, reviewCompletedFragment } = require('./fragments')
-const { standardCollID } = require('./collectionIDs')
+const {
+  standardCollID,
+  collectionReviewCompletedID,
+} = require('./collectionIDs')
 
 const chance = new Chance()
 const collections = {
@@ -90,6 +93,7 @@ const collections = {
     status: 'pendingApproval',
   },
   collectionReviewCompleted: {
+    id: collectionReviewCompletedID,
     type: 'collection',
     owners: [user.id],
     status: 'reviewCompleted',
diff --git a/packages/component-fixture-manager/src/fixtures/fragments.js b/packages/component-fixture-manager/src/fixtures/fragments.js
index 719d65b46..bbb0029e3 100644
--- a/packages/component-fixture-manager/src/fixtures/fragments.js
+++ b/packages/component-fixture-manager/src/fixtures/fragments.js
@@ -8,7 +8,10 @@ const {
   admin,
   inactiveReviewer,
 } = require('./userData')
-const { standardCollID } = require('./collectionIDs')
+const {
+  standardCollID,
+  collectionReviewCompletedID,
+} = require('./collectionIDs')
 const { user } = require('./userData')
 
 const chance = new Chance()
@@ -38,7 +41,7 @@ const fragments = {
           },
         ],
         id: chance.guid(),
-        userId: recReviewer.id,
+        userId: answerReviewer.id,
         createdOn: chance.timestamp(),
         updatedOn: chance.timestamp(),
       },
@@ -213,7 +216,7 @@ const fragments = {
       hasConflicts: 'no',
       hasDataAvailability: 'yes',
     },
-    submitted: 1539000486993,
+    submitted: chance.timestamp(),
     invitations: [
       {
         id: chance.guid(),
@@ -246,7 +249,7 @@ const fragments = {
         respondedOn: chance.timestamp(),
       },
     ],
-    collectionId: standardCollID,
+    collectionId: collectionReviewCompletedID,
     declarations: {
       agree: true,
     },
diff --git a/packages/component-fixture-manager/src/fixtures/teamIDs.js b/packages/component-fixture-manager/src/fixtures/teamIDs.js
index 83ce3a556..5528425bf 100644
--- a/packages/component-fixture-manager/src/fixtures/teamIDs.js
+++ b/packages/component-fixture-manager/src/fixtures/teamIDs.js
@@ -1,12 +1,10 @@
 const Chance = require('chance')
 
 const chance = new Chance()
-const heID = chance.guid()
-const revId = chance.guid()
-const authorID = chance.guid()
 
 module.exports = {
-  heTeamID: heID,
-  revTeamID: revId,
-  authorTeamID: authorID,
+  heTeamID: chance.guid(),
+  revTeamID: chance.guid(),
+  authorTeamID: chance.guid(),
+  revRecommendationTeamID: chance.guid(),
 }
diff --git a/packages/component-fixture-manager/src/fixtures/teams.js b/packages/component-fixture-manager/src/fixtures/teams.js
index acd600dc7..5191421c2 100644
--- a/packages/component-fixture-manager/src/fixtures/teams.js
+++ b/packages/component-fixture-manager/src/fixtures/teams.js
@@ -2,12 +2,23 @@ const users = require('./users')
 const collections = require('./collections')
 const fragments = require('./fragments')
 
-const { heTeamID, revTeamID, authorTeamID } = require('./teamIDs')
+const {
+  heTeamID,
+  revTeamID,
+  authorTeamID,
+  revRecommendationTeamID,
+} = require('./teamIDs')
 const { submittingAuthor } = require('./userData')
 
 const { collection } = collections
-const { fragment } = fragments
-const { handlingEditor, reviewer, inactiveReviewer } = users
+const { fragment, reviewCompletedFragment } = fragments
+const {
+  handlingEditor,
+  reviewer,
+  inactiveReviewer,
+  answerReviewer,
+  recReviewer,
+} = users
 const teams = {
   heTeam: {
     teamType: {
@@ -36,11 +47,27 @@ const teams = {
       type: 'fragment',
       id: fragment.id,
     },
-    members: [reviewer.id, inactiveReviewer.id],
+    members: [reviewer.id, inactiveReviewer.id, answerReviewer.id],
     save: jest.fn(() => teams.revTeam),
     updateProperties: jest.fn(() => teams.revTeam),
     id: revTeamID,
   },
+  revRecommendationTeam: {
+    teamType: {
+      name: 'reviewer',
+      permissions: 'reviewer',
+    },
+    group: 'reviewer',
+    name: 'reviewer',
+    object: {
+      type: 'fragment',
+      id: reviewCompletedFragment.id,
+    },
+    members: [reviewer.id, answerReviewer.id, recReviewer.id],
+    save: jest.fn(() => teams.revRecommendationTeam),
+    updateProperties: jest.fn(() => teams.revRecommendationTeam),
+    id: revRecommendationTeamID,
+  },
   authorTeam: {
     teamType: {
       name: 'author',
diff --git a/packages/component-fixture-manager/src/fixtures/users.js b/packages/component-fixture-manager/src/fixtures/users.js
index a315e0e1b..e5ee9ae59 100644
--- a/packages/component-fixture-manager/src/fixtures/users.js
+++ b/packages/component-fixture-manager/src/fixtures/users.js
@@ -2,7 +2,12 @@ const Chance = require('chance')
 const usersData = require('./userData')
 
 const chance = new Chance()
-const { heTeamID, revTeamID, authorTeamID } = require('./teamIDs')
+const {
+  heTeamID,
+  revTeamID,
+  authorTeamID,
+  revRecommendationTeamID,
+} = require('./teamIDs')
 
 const keys = Object.keys(usersData)
 let users = {}
@@ -17,12 +22,12 @@ users = keys.reduce((obj, item) => {
   if (item === 'author') {
     teams = [authorTeamID]
   }
-  if (
-    ['reviewer', 'answerReviewer', 'recReviewer', 'inactiveReviewer'].includes(
-      item,
-    )
-  ) {
-    teams = [revTeamID]
+  if (['reviewer', 'inactiveReviewer', 'answerReviewer'].includes(item)) {
+    teams.push(revTeamID)
+  }
+
+  if (['reviewer', 'answerReviewer', 'recReviewer'].includes(item)) {
+    teams.push(revRecommendationTeamID)
   }
 
   obj[item] = {
diff --git a/packages/component-invite/src/tests/fragmentsInvitations/get.test.js b/packages/component-invite/src/tests/fragmentsInvitations/get.test.js
index d30877398..4a33e93aa 100644
--- a/packages/component-invite/src/tests/fragmentsInvitations/get.test.js
+++ b/packages/component-invite/src/tests/fragmentsInvitations/get.test.js
@@ -44,7 +44,7 @@ describe('Get fragment invitations route handler', () => {
     expect(res.statusCode).toBe(200)
     const data = JSON.parse(res._getData())
 
-    expect(data).toHaveLength(2)
+    expect(data).toHaveLength(3)
   })
   it('should return an error when parameters are missing', async () => {
     const { handlingEditor } = testFixtures.users
diff --git a/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js b/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js
index 15d6f7a45..0342f906a 100644
--- a/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js
+++ b/packages/component-invite/src/tests/fragmentsInvitations/patch.test.js
@@ -62,7 +62,7 @@ describe('Patch fragments invitations route handler', () => {
     await require(patchPath)(models)(req, res)
 
     expect(res.statusCode).toBe(200)
-    expect(reviewer.teams).toHaveLength(0)
+    expect(reviewer.teams).toHaveLength(1)
   })
   it('should return an error if the collection does not exist', async () => {
     const { handlingEditor } = testFixtures.users
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 f072e2693..0862779b6 100644
--- a/packages/component-manuscript-manager/src/tests/collections/get.test.js
+++ b/packages/component-manuscript-manager/src/tests/collections/get.test.js
@@ -44,10 +44,10 @@ describe('Get collections route handler', () => {
   })
 
   it('should return collections with the latest fragments if the request user is reviewer', async () => {
-    const { recReviewer } = testFixtures.users
+    const { answerReviewer } = testFixtures.users
 
     const res = await requests.sendRequest({
-      userId: recReviewer.id,
+      userId: answerReviewer.id,
       route,
       models,
       path,
@@ -56,7 +56,7 @@ describe('Get collections route handler', () => {
     expect(res.statusCode).toBe(200)
     const data = JSON.parse(res._getData())
 
-    expect(data).toHaveLength(1)
+    expect(data).toHaveLength(2)
     expect(data[0].type).toEqual('collection')
     expect(data[0].currentVersion.recommendations).toHaveLength(1)
     expect(data[0].currentVersion.authors[0]).not.toHaveProperty('email')
diff --git a/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/patch.test.js b/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/patch.test.js
index d67ae0ea4..05c6e8271 100644
--- a/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/patch.test.js
+++ b/packages/component-manuscript-manager/src/tests/fragmentsRecommendations/patch.test.js
@@ -45,13 +45,13 @@ describe('Patch fragments recommendations route handler', () => {
     models = Model.build(testFixtures)
   })
   it('should return success when the parameters are correct', async () => {
-    const { recReviewer } = testFixtures.users
+    const { answerReviewer } = testFixtures.users
     const { collection } = testFixtures.collections
     const { fragment } = testFixtures.fragments
     const recommendation = fragment.recommendations[0]
     const res = await requests.sendRequest({
       body,
-      userId: recReviewer.id,
+      userId: answerReviewer.id,
       models,
       route,
       path,
@@ -64,7 +64,7 @@ describe('Patch fragments recommendations route handler', () => {
 
     expect(res.statusCode).toBe(200)
     const data = JSON.parse(res._getData())
-    expect(data.userId).toEqual(recReviewer.id)
+    expect(data.userId).toEqual(answerReviewer.id)
   })
   it('should return an error when the fragmentId does not match the collectionId', async () => {
     const { reviewer } = testFixtures.users
-- 
GitLab