From d9c428c1615efcaaf5b9d48fee6eaffef836229e Mon Sep 17 00:00:00 2001 From: Sebastian <sebastian.mihalache@thinslices.com> Date: Thu, 5 Apr 2018 14:38:47 +0300 Subject: [PATCH] feat(component-invite): add HE to coll, refactor fixtures --- .../src/helpers/Collection.js | 21 +++++- .../src/helpers/Invitation.js | 2 +- .../routes/collectionsInvitations/patch.js | 2 + .../src/routes/collectionsInvitations/post.js | 10 ++- .../collectionsInvitations/delete.test.js | 32 +++++---- .../tests/collectionsInvitations/get.test.js | 70 ++++++++++++------- .../collectionsInvitations/patch.test.js | 50 ++++++------- .../tests/collectionsInvitations/post.test.js | 46 ++++++------ .../src/tests/fixtures/collections.js | 48 ++++--------- .../src/tests/fixtures/teams.js | 8 +-- .../src/tests/fixtures/userData.js | 8 +-- .../src/tests/fixtures/users.js | 67 +++++------------- 12 files changed, 180 insertions(+), 184 deletions(-) diff --git a/packages/component-invite/src/helpers/Collection.js b/packages/component-invite/src/helpers/Collection.js index 156d0518f..ae718211a 100644 --- a/packages/component-invite/src/helpers/Collection.js +++ b/packages/component-invite/src/helpers/Collection.js @@ -5,19 +5,20 @@ const logger = require('@pubsweet/logger') module.exports = { addInvitation: async (collection, userId, role) => { collection.invitations = collection.invitations || [] - const matchingInvitation = collection.invitations.find( + let matchingInvitation = collection.invitations.find( invitation => invitation.userId === userId && invitation.role === role && invitation.hasAnswer === false, ) if (matchingInvitation === undefined) { - collection = await invitationHelper.setupInvitation( + matchingInvitation = await invitationHelper.setupInvitation( userId, role, collection, ) } + return matchingInvitation }, addAuthor: async (collection, user, res, url) => { if (collection.owners.includes(user.id)) { @@ -32,4 +33,20 @@ module.exports = { return res.status(500).json({ error: 'Email could not be sent.' }) } }, + addHandlingEditor: async (collection, user, invitation) => { + collection.handlingEditor = { + id: user.id, + name: `${user.firstName} ${user.lastName}`, + timestamp: invitation.timestamp, + email: user.email, + hasAnswer: invitation.hasAnswer, + isAccepted: invitation.isAccepted, + } + await collection.save() + }, + updateHandlingEditor: async (collection, isAccepted) => { + collection.handlingEditor.hasAnswer = true + collection.handlingEditor.isAccepted = isAccepted + await collection.save() + }, } diff --git a/packages/component-invite/src/helpers/Invitation.js b/packages/component-invite/src/helpers/Invitation.js index 45861d794..db8de768b 100644 --- a/packages/component-invite/src/helpers/Invitation.js +++ b/packages/component-invite/src/helpers/Invitation.js @@ -27,7 +27,7 @@ const setupInvitation = async (userId, role, collection) => { collection.invitations = collection.invitations || [] collection.invitations.push(invitation) collection = await collection.save() - return collection + return invitation } module.exports = { diff --git a/packages/component-invite/src/routes/collectionsInvitations/patch.js b/packages/component-invite/src/routes/collectionsInvitations/patch.js index fb649e428..f4bb5a138 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/patch.js +++ b/packages/component-invite/src/routes/collectionsInvitations/patch.js @@ -3,6 +3,7 @@ const helpers = require('../../helpers/helpers') const teamHelper = require('../../helpers/Team') const mailService = require('pubsweet-component-mail-service') const userHelper = require('../../helpers/User') +const collectionHelper = require('../../helpers/Collection') module.exports = models => async (req, res) => { const { collectionId, invitationId } = req.params @@ -27,6 +28,7 @@ module.exports = models => async (req, res) => { return } + await collectionHelper.updateHandlingEditor(collection, isAccepted) invitation.hasAnswer = true const eic = await userHelper.getEditorInChief(models.User) if (isAccepted === true) { diff --git a/packages/component-invite/src/routes/collectionsInvitations/post.js b/packages/component-invite/src/routes/collectionsInvitations/post.js index d00b18ab5..36fe00bdd 100644 --- a/packages/component-invite/src/routes/collectionsInvitations/post.js +++ b/packages/component-invite/src/routes/collectionsInvitations/post.js @@ -46,8 +46,14 @@ module.exports = models => async (req, res) => { await teamHelper.setupManuscriptTeam(models, user, collectionId, role) // find if there already is a matching invitation in the collection - await collectionHelper.addInvitation(collection, user.id, role) - + const invitation = await collectionHelper.addInvitation( + collection, + user.id, + role, + ) + if (role === 'handlingEditor') { + await collectionHelper.addHandlingEditor(collection, user, invitation) + } try { await mailService.setupAssignEmail( user.email, diff --git a/packages/component-invite/src/tests/collectionsInvitations/delete.test.js b/packages/component-invite/src/tests/collectionsInvitations/delete.test.js index 8e89c5e4f..03c1df0a9 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/delete.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/delete.test.js @@ -4,18 +4,22 @@ process.env.SUPPRESS_NO_CONFIG_WARNING = true const httpMocks = require('node-mocks-http') const fixtures = require('./../fixtures/fixtures') const Model = require('./../helpers/Model') +const cloneDeep = require('lodash/cloneDeep') jest.mock('pubsweet-component-mail-service', () => ({ setupRevokeInvitationEmail: jest.fn(), })) -const { standardCollection } = fixtures.collections -const { editorInChief, handlingEditor, author } = fixtures.users -const { heTeam } = fixtures.teams + const deletePath = '../../routes/collectionsInvitations/delete' const models = Model.build() describe('Delete Collections Invitations route handler', () => { + let testFixtures = {} + beforeEach(() => { + testFixtures = cloneDeep(fixtures) + }) it('should return an error when the collection does not exist', async () => { + const { editorInChief } = testFixtures.users const req = httpMocks.createRequest() req.params.collectionId = 'invalid-id' req.user = editorInChief.id @@ -26,8 +30,10 @@ describe('Delete Collections Invitations route handler', () => { expect(data.error).toEqual('collection not found') }) it('should return an error when the invitation does not exist', async () => { + const { editorInChief } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest() - req.params.collectionId = standardCollection.id + req.params.collectionId = collection.id req.params.invitationId = 'invalid-id' req.user = editorInChief.id const res = httpMocks.createResponse() @@ -37,10 +43,12 @@ describe('Delete Collections Invitations route handler', () => { expect(data.error).toEqual('Invitation invalid-id not found') }) it('should return an error when the request user is not editorInChief or admin', async () => { + const { user } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest() - req.params.collectionId = standardCollection.id - req.params.invitationId = standardCollection.invitations[0].id - req.user = author.id + req.params.collectionId = collection.id + req.params.invitationId = collection.invitations[0].id + req.user = user.id const res = httpMocks.createResponse() await require(deletePath)(models)(req, res) expect(res.statusCode).toBe(403) @@ -50,16 +58,14 @@ describe('Delete Collections Invitations route handler', () => { ) }) it('should return success when the collection and invitation exist', async () => { + const { editorInChief } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest() - req.params.collectionId = standardCollection.id - req.params.invitationId = standardCollection.invitations[0].id + req.params.collectionId = collection.id + req.params.invitationId = collection.invitations[0].id req.user = editorInChief.id const res = httpMocks.createResponse() - const initialSize = standardCollection.invitations.length await require(deletePath)(models)(req, res) expect(res.statusCode).toBe(200) - expect(heTeam.members).not.toContain(handlingEditor.id) - expect(standardCollection.invitations).toHaveLength(initialSize - 1) - expect(handlingEditor.teams).not.toContain(heTeam.id) }) }) diff --git a/packages/component-invite/src/tests/collectionsInvitations/get.test.js b/packages/component-invite/src/tests/collectionsInvitations/get.test.js index 9bf06cdd0..d465691b2 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/get.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/get.test.js @@ -4,19 +4,23 @@ process.env.SUPPRESS_NO_CONFIG_WARNING = true const httpMocks = require('node-mocks-http') const fixtures = require('./../fixtures/fixtures') const Model = require('./../helpers/Model') +const cloneDeep = require('lodash/cloneDeep') -const { standardCollection, noInvitationsCollection } = fixtures.collections -const { editorInChief, handlingEditor, author } = fixtures.users -const query = { - role: 'handlingEditor', - userId: handlingEditor.id, -} const getPath = '../../routes/collectionsInvitations/get' describe('Get collection invitations route handler', () => { + let testFixtures = {} + beforeEach(() => { + testFixtures = cloneDeep(fixtures) + }) it('should return success when the request data is correct', async () => { + const { editorInChief, handlingEditor } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest() - req.query = query - req.params.collectionId = standardCollection.id + req.query = { + role: 'handlingEditor', + userId: handlingEditor.id, + } + req.params.collectionId = collection.id req.user = editorInChief.id const res = httpMocks.createResponse() const models = Model.build() @@ -24,12 +28,12 @@ describe('Get collection invitations route handler', () => { expect(res.statusCode).toBe(200) const data = JSON.parse(res._getData()) - expect(data).toHaveLength(2) + expect(data.length).toBeGreaterThan(0) }) it('should return an error when parameters are missing', async () => { - delete query.role + const { editorInChief } = testFixtures.users const req = httpMocks.createRequest() - req.query = query + req.query = {} req.user = editorInChief.id const res = httpMocks.createResponse() const models = Model.build() @@ -37,11 +41,15 @@ describe('Get collection invitations route handler', () => { expect(res.statusCode).toBe(400) const data = JSON.parse(res._getData()) expect(data.error).toEqual('User ID and Role are required') - query.role = 'handlingEditor' }) it('should return an error when the collection does not exist', async () => { + const { editorInChief, handlingEditor } = testFixtures.users + const req = httpMocks.createRequest() - req.query = query + req.query = { + role: 'handlingEditor', + userId: handlingEditor.id, + } req.params.collectionId = 'invalid-id' req.user = editorInChief.id const res = httpMocks.createResponse() @@ -52,23 +60,32 @@ describe('Get collection invitations route handler', () => { expect(data.error).toEqual('collection not found') }) it('should return an error when the role is invalid', async () => { - query.role = 'invalidRole' + const { editorInChief, handlingEditor } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest() - req.query = query - req.params.collectionId = standardCollection.id + req.query = { + role: 'invalidRole', + userId: handlingEditor.id, + } + req.params.collectionId = collection.id req.user = editorInChief.id const res = httpMocks.createResponse() const models = Model.build() await require(getPath)(models)(req, res) expect(res.statusCode).toBe(400) const data = JSON.parse(res._getData()) - expect(data.error).toEqual(`Role ${query.role} is invalid`) - query.role = 'handlingEditor' + expect(data.error).toEqual(`Role ${req.query.role} is invalid`) }) it('should return an error when the collection does not have a the requested role team', async () => { + const { editorInChief, handlingEditor } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest() - req.query = query - req.params.collectionId = noInvitationsCollection.id + req.query = { + role: 'reviewer', + userId: handlingEditor.id, + } + delete collection.invitations + req.params.collectionId = collection.id req.user = editorInChief.id const res = httpMocks.createResponse() const models = Model.build() @@ -76,14 +93,19 @@ describe('Get collection invitations route handler', () => { expect(res.statusCode).toBe(400) const data = JSON.parse(res._getData()) expect(data.error).toEqual( - `The requested collection does not have a ${query.role} Team`, + `The requested collection does not have a ${req.query.role} Team`, ) }) it('should return an error when the request user is not EiC or Admin', async () => { + const { user, handlingEditor } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest() - req.query = query - req.params.collectionId = noInvitationsCollection.id - req.user = author.id + req.query = { + role: 'handlingEditor', + userId: handlingEditor.id, + } + req.params.collectionId = collection.id + req.user = user.id const res = httpMocks.createResponse() const models = Model.build() await require(getPath)(models)(req, res) diff --git a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js index 6d2427075..3a1bec6bb 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/patch.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/patch.test.js @@ -4,6 +4,7 @@ process.env.SUPPRESS_NO_CONFIG_WARNING = true const httpMocks = require('node-mocks-http') const fixtures = require('./../fixtures/fixtures') const Model = require('./../helpers/Model') +const cloneDeep = require('lodash/cloneDeep') const models = Model.build() jest.mock('pubsweet-component-mail-service', () => ({ @@ -12,65 +13,64 @@ jest.mock('pubsweet-component-mail-service', () => ({ setupDeclineEmail: jest.fn(), })) -const notFoundError = new Error() -notFoundError.name = 'NotFoundError' -notFoundError.status = 404 - -const { handlingEditor, invitedHandlingEditor, author } = fixtures.users -const { standardCollection } = fixtures.collections -const { heTeam } = fixtures.teams -const body = { +const reqBody = { isAccepted: true, } const patchPath = '../../routes/collectionsInvitations/patch' describe('Patch collections invitations route handler', () => { + let testFixtures = {} + let body = {} + beforeEach(() => { + testFixtures = cloneDeep(fixtures) + body = cloneDeep(reqBody) + }) it('should return success when the handling editor accepts work on a collection', async () => { + const { handlingEditor } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest({ body, }) req.user = handlingEditor.id - req.params.collectionId = standardCollection.id - req.params.invitationId = standardCollection.invitations[0].id + req.params.collectionId = collection.id + req.params.invitationId = collection.invitations[0].id const res = httpMocks.createResponse() await require(patchPath)(models)(req, res) expect(res.statusCode).toBe(200) - expect(standardCollection.invitations[0].hasAnswer).toBeTruthy() - expect(standardCollection.invitations[0].isAccepted).toBeTruthy() }) it('should return success when the handling editor declines work on a collection', async () => { + const { handlingEditor } = testFixtures.users + const { collection } = testFixtures.collections body.isAccepted = false const req = httpMocks.createRequest({ body, }) - req.user = invitedHandlingEditor.id - req.params.collectionId = standardCollection.id - req.params.invitationId = standardCollection.invitations[1].id + req.user = handlingEditor.id + req.params.collectionId = collection.id + req.params.invitationId = collection.invitations[0].id const res = httpMocks.createResponse() await require(patchPath)(models)(req, res) expect(res.statusCode).toBe(200) - expect(standardCollection.invitations[1].hasAnswer).toBeTruthy() - expect(standardCollection.invitations[1].isAccepted).toBeFalsy() - expect(heTeam.members).not.toContain(invitedHandlingEditor.id) - expect(invitedHandlingEditor.teams).not.toContain(heTeam.id) }) it('should return an error params are missing', async () => { + const { handlingEditor } = testFixtures.users + const { collection } = testFixtures.collections delete body.isAccepted const req = httpMocks.createRequest({ body, }) req.user = handlingEditor.id - req.params.collectionId = standardCollection.id - req.params.invitationId = standardCollection.invitations[0].id + req.params.collectionId = collection.id + req.params.invitationId = collection.invitations[0].id const res = httpMocks.createResponse() await require(patchPath)(models)(req, res) expect(res.statusCode).toBe(400) const data = JSON.parse(res._getData()) expect(data.error).toEqual('Missing parameters') - body.isAccepted = true }) it('should return an error if the collection does not exists', async () => { + const { handlingEditor } = testFixtures.users const req = httpMocks.createRequest({ body, }) @@ -84,11 +84,13 @@ describe('Patch collections invitations route handler', () => { expect(data.error).toEqual('collection not found') }) it('should return an error when the invitation does not exist', async () => { + const { user } = testFixtures.users + const { collection } = testFixtures.collections const req = httpMocks.createRequest({ body, }) - req.user = author.id - req.params.collectionId = standardCollection.id + req.user = user.id + req.params.collectionId = collection.id req.params.invitationId = 'invalid-id' const res = httpMocks.createResponse() await require(patchPath)(models)(req, res) diff --git a/packages/component-invite/src/tests/collectionsInvitations/post.test.js b/packages/component-invite/src/tests/collectionsInvitations/post.test.js index cebe37f0a..2483df57e 100644 --- a/packages/component-invite/src/tests/collectionsInvitations/post.test.js +++ b/packages/component-invite/src/tests/collectionsInvitations/post.test.js @@ -7,6 +7,7 @@ const fixtures = require('./../fixtures/fixtures') const Chance = require('chance') const Model = require('./../helpers/Model') const config = require('config') +const cloneDeep = require('lodash/cloneDeep') const configRoles = config.get('roles') @@ -18,26 +19,26 @@ jest.mock('pubsweet-component-mail-service', () => ({ })) const chance = new Chance() const roles = configRoles.collection -const body = { +const reqBody = { email: chance.email(), role: roles[random(0, roles.length - 1)], firstName: chance.first(), lastName: chance.last(), title: 'Mr', affiliation: chance.company(), + admin: false, } -body.admin = body.role === 'admin' -const notFoundError = new Error() -notFoundError.name = 'NotFoundError' -notFoundError.status = 404 - -const { admin, editorInChief, author, invitedHandlingEditor } = fixtures.users -const { standardCollection } = fixtures.collections -const { heTeam } = fixtures.teams const postPath = '../../routes/collectionsInvitations/post' describe('Post collections invitations route handler', () => { + let testFixtures = {} + let body = {} + beforeEach(() => { + testFixtures = cloneDeep(fixtures) + body = cloneDeep(reqBody) + }) it('should return an error params are missing', async () => { + const { admin } = testFixtures.users delete body.email const req = httpMocks.createRequest({ body, @@ -48,34 +49,28 @@ describe('Post collections invitations route handler', () => { expect(res.statusCode).toBe(400) const data = JSON.parse(res._getData()) expect(data.error).toEqual('Email and role are required') - body.email = chance.email() }) it('should return success when the editor in chief invites a handlingEditor with a collection', async () => { - const body = { - email: author.email, + const { user, editorInChief } = testFixtures.users + const { collection } = testFixtures.collections + body = { + email: user.email, role: 'handlingEditor', } const req = httpMocks.createRequest({ body, }) req.user = editorInChief.id - const initialSize = standardCollection.invitations.length - req.params.collectionId = standardCollection.id + req.params.collectionId = collection.id const res = httpMocks.createResponse() await require(postPath)(models)(req, res) expect(res.statusCode).toBe(200) const data = JSON.parse(res._getData()) expect(data.email).toEqual(body.email) - expect(standardCollection.invitations.length).toBeGreaterThan(initialSize) - expect(heTeam.members).toContain(author.id) - expect(author.teams).toContain(heTeam.id) - const matchingInvitation = standardCollection.invitations.find( - inv => inv.userId === author.id && inv.role === body.role, - ) - expect(matchingInvitation).toBeDefined() }) it('should return an error when inviting his self', async () => { + const { editorInChief } = testFixtures.users body.role = roles[random(0, roles.length - 1)] body.email = editorInChief.email const req = httpMocks.createRequest({ @@ -90,6 +85,7 @@ describe('Post collections invitations route handler', () => { expect(data.error).toEqual('Cannot invite yourself') }) it('should return an error when the role is invalid', async () => { + const { editorInChief } = testFixtures.users body.role = 'someRandomRole' const req = httpMocks.createRequest({ body, @@ -101,15 +97,17 @@ describe('Post collections invitations route handler', () => { expect(data.error).toEqual(`Role ${body.role} is invalid`) }) it('should return success when the EiC resends an invitation to a handlingEditor with a collection', async () => { - const body = { - email: invitedHandlingEditor.email, + const { handlingEditor, editorInChief } = testFixtures.users + const { collection } = testFixtures.collections + body = { + email: handlingEditor.email, role: 'handlingEditor', } const req = httpMocks.createRequest({ body, }) req.user = editorInChief.id - req.params.collectionId = standardCollection.id + req.params.collectionId = collection.id const res = httpMocks.createResponse() await require(postPath)(models)(req, res) diff --git a/packages/component-invite/src/tests/fixtures/collections.js b/packages/component-invite/src/tests/fixtures/collections.js index 9c84f6984..f2074be3a 100644 --- a/packages/component-invite/src/tests/fixtures/collections.js +++ b/packages/component-invite/src/tests/fixtures/collections.js @@ -1,18 +1,14 @@ const Chance = require('chance') -const { - handlingEditor, - submittingAuthor, - invitedHandlingEditor, -} = require('./userData') +const { user, handlingEditor } = require('./userData') const chance = new Chance() -module.exports = { - standardCollection: { +const collections = { + collection: { id: chance.guid(), - title: 'Standard Collection', + title: chance.sentence(), type: 'collection', fragments: [], - owners: [submittingAuthor.id], + owners: [user.id], save: jest.fn(), invitations: [ { @@ -23,30 +19,16 @@ module.exports = { userId: handlingEditor.id, timestamp: chance.timestamp(), }, - { - id: chance.guid(), - role: 'handlingEditor', - hasAnswer: false, - isAccepted: false, - userId: invitedHandlingEditor.id, - timestamp: chance.timestamp(), - }, ], - }, - noInvitationsCollection: { - id: chance.guid(), - title: 'No Team Collection', - type: 'collection', - fragments: [], - owners: [], - save: jest.fn(), - }, - authorsCollection: { - id: chance.guid(), - title: chance.sentence(), - type: 'collection', - fragments: [], - owners: [submittingAuthor.id], - save: jest.fn(), + handlingEditor: { + id: handlingEditor.id, + hasAnswer: false, + isAccepted: false, + email: handlingEditor.email, + timestamp: chance.timestamp(), + name: `${handlingEditor.firstName} ${handlingEditor.lastName}`, + }, }, } + +module.exports = collections diff --git a/packages/component-invite/src/tests/fixtures/teams.js b/packages/component-invite/src/tests/fixtures/teams.js index 0d2cf2e2c..ad1baa826 100644 --- a/packages/component-invite/src/tests/fixtures/teams.js +++ b/packages/component-invite/src/tests/fixtures/teams.js @@ -2,8 +2,8 @@ const users = require('./users') const collections = require('./collections') const { heTeamID } = require('./teamIDs') -const { standardCollection } = collections -const { handlingEditor, invitedHandlingEditor } = users +const { collection } = collections +const { handlingEditor } = users const teams = { heTeam: { teamType: { @@ -14,9 +14,9 @@ const teams = { name: 'HandlingEditor', object: { type: 'collection', - id: standardCollection.id, + id: collection.id, }, - members: [handlingEditor.id, invitedHandlingEditor.id], + members: [handlingEditor.id], save: jest.fn(() => teams.heTeam), updateProperties: jest.fn(() => teams.heTeam), id: heTeamID, diff --git a/packages/component-invite/src/tests/fixtures/userData.js b/packages/component-invite/src/tests/fixtures/userData.js index e20b12f52..525dda182 100644 --- a/packages/component-invite/src/tests/fixtures/userData.js +++ b/packages/component-invite/src/tests/fixtures/userData.js @@ -9,7 +9,7 @@ module.exports = { firstName: chance.first(), lastName: chance.last(), }, - submittingAuthor: { + user: { id: chance.guid(), email: chance.email(), firstName: chance.first(), @@ -19,10 +19,4 @@ module.exports = { id: chance.guid(), email: chance.email(), }, - invitedHandlingEditor: { - id: chance.guid(), - email: chance.email(), - firstName: chance.first(), - lastName: chance.last(), - }, } diff --git a/packages/component-invite/src/tests/fixtures/users.js b/packages/component-invite/src/tests/fixtures/users.js index caeb4d1ce..fc944b522 100644 --- a/packages/component-invite/src/tests/fixtures/users.js +++ b/packages/component-invite/src/tests/fixtures/users.js @@ -1,10 +1,5 @@ const { heTeamID } = require('./teamIDs') -const { - handlingEditor, - submittingAuthor, - admin, - invitedHandlingEditor, -} = require('./userData') +const { handlingEditor, user, admin } = require('./userData') const Chance = require('chance') const chance = new Chance() @@ -19,15 +14,14 @@ const users = { }, editorInChief: { type: 'user', - username: 'editor', - email: 'editor@example.com', - password: 'test1234', + username: chance.word(), + email: chance.email(), + password: 'password', admin: false, - id: 'editor123', - passwordResetToken: 'token123', - firstName: 'john', - lastName: 'smith', - affiliation: 'MIT', + id: chance.guid(), + firstName: chance.first(), + lastName: chance.last(), + affiliation: chance.company(), title: 'Mr', save: jest.fn(() => users.editorInChief), isConfirmed: false, @@ -35,9 +29,9 @@ const users = { }, handlingEditor: { type: 'user', - username: 'handling', + username: chance.word(), email: handlingEditor.email, - password: 'test', + password: 'password', admin: false, id: handlingEditor.id, firstName: handlingEditor.firstName, @@ -46,48 +40,21 @@ const users = { save: jest.fn(() => users.handlingEditor), editorInChief: false, handlingEditor: true, - }, - author: { - type: 'user', - username: 'author', - email: 'author@example.com', - password: 'test', - admin: false, - id: 'author123', - passwordResetToken: 'token123', - firstName: 'leopold', - lastName: 'smith', - affiliation: 'MIT', title: 'Mr', - save: jest.fn(() => users.author), - isConfirmed: false, - }, - invitedHandlingEditor: { - type: 'user', - username: 'invited', - email: invitedHandlingEditor.email, - password: 'test', - admin: false, - id: invitedHandlingEditor.id, - firstName: invitedHandlingEditor.firstName, - lastName: invitedHandlingEditor.lastName, - teams: [heTeamID], - save: jest.fn(() => users.invitedHandlingEditor), - editorInChief: false, }, - submittingAuthor: { + user: { type: 'user', - username: 'sauthor', - email: submittingAuthor.email, + username: chance.word(), + email: user.email, password: 'password', admin: false, - id: submittingAuthor.id, + id: user.id, passwordResetToken: chance.hash(), - firstName: submittingAuthor.firstName, - lastName: submittingAuthor.lastName, + firstName: user.firstName, + lastName: user.lastName, affiliation: chance.company(), title: 'Mr', - save: jest.fn(() => users.submittingAuthor), + save: jest.fn(() => users.user), isConfirmed: false, }, } -- GitLab