Skip to content
Snippets Groups Projects
Commit 576e5ba6 authored by Sebastian's avatar Sebastian
Browse files

feat(component-invite): finish tests

parent 9bd5b137
No related branches found
No related tags found
No related merge requests found
...@@ -17,34 +17,22 @@ module.exports = models => async (req, res) => { ...@@ -17,34 +17,22 @@ module.exports = models => async (req, res) => {
return return
} }
const { collectionId } = req.params const { collectionId } = req.params
const assignations = user.assignations.filter( const filteredAssignations = user.assignations.filter(
assignation => assignation.collectionId === collectionId, assignation =>
assignation.collectionId === collectionId && assignation.type === type,
) )
if (assignations.length === 0) { if (filteredAssignations.length === 0) {
res.status(400).json({ res.status(400).json({
error: `Collection ${collectionId} does not match any user assignation`, error: `Request data does not match any user assignation`,
}) })
logger.error( logger.error(
`Collection ${collectionId} does not match any user assignation`, `Collection ${collectionId} and type '${type}' do not match any user assignation`,
)
return
}
const matchingAssignation = assignations[0]
if (type !== matchingAssignation.type) {
res.status(400).json({
error: 'User assignation type and provided type do not match',
})
logger.error(
`Param ${type} does not match user assignation type: ${
matchingAssignation.type
}`,
) )
return return
} }
const matchingAssignation = filteredAssignations[0]
try { try {
await models.Collection.find(collectionId) await models.Collection.find(collectionId)
// TODO: create a team and add the team id to the user's teams array // TODO: create a team and add the team id to the user's teams array
......
const collections = require('./collections')
const { standardCollection } = collections
const users = { const users = {
admin: { admin: {
type: 'user', type: 'user',
...@@ -36,6 +39,7 @@ const users = { ...@@ -36,6 +39,7 @@ const users = {
type: 'handlingEditor', type: 'handlingEditor',
hasAnswer: false, hasAnswer: false,
isAccepted: false, isAccepted: false,
collectionId: standardCollection.id,
}, },
], ],
save: jest.fn(() => users.handlingEditor), save: jest.fn(() => users.handlingEditor),
......
...@@ -48,6 +48,7 @@ describe('Post assignation route handler', () => { ...@@ -48,6 +48,7 @@ describe('Post assignation route handler', () => {
body, body,
}) })
req.user = acceptingHE req.user = acceptingHE
req.params.collectionId = standardCollection.id
const res = httpMocks.createResponse() const res = httpMocks.createResponse()
const models = buildModels(standardCollection, acceptingHE) const models = buildModels(standardCollection, acceptingHE)
await require(postAssignationPath)(models)(req, res) await require(postAssignationPath)(models)(req, res)
...@@ -66,6 +67,7 @@ describe('Post assignation route handler', () => { ...@@ -66,6 +67,7 @@ describe('Post assignation route handler', () => {
body, body,
}) })
req.user = refusingHE req.user = refusingHE
req.params.collectionId = standardCollection.id
const res = httpMocks.createResponse() const res = httpMocks.createResponse()
const models = buildModels(standardCollection, refusingHE) const models = buildModels(standardCollection, refusingHE)
await require(postAssignationPath)(models)(req, res) await require(postAssignationPath)(models)(req, res)
...@@ -82,6 +84,7 @@ describe('Post assignation route handler', () => { ...@@ -82,6 +84,7 @@ describe('Post assignation route handler', () => {
body, body,
}) })
req.user = handlingEditor req.user = handlingEditor
req.params.collectionId = standardCollection.id
const res = httpMocks.createResponse() const res = httpMocks.createResponse()
const models = buildModels(standardCollection, handlingEditor) const models = buildModels(standardCollection, handlingEditor)
await require(postAssignationPath)(models)(req, res) await require(postAssignationPath)(models)(req, res)
...@@ -99,6 +102,7 @@ describe('Post assignation route handler', () => { ...@@ -99,6 +102,7 @@ describe('Post assignation route handler', () => {
body, body,
}) })
req.user = handlingEditor req.user = handlingEditor
req.params.collectionId = standardCollection.id
const res = httpMocks.createResponse() const res = httpMocks.createResponse()
const models = buildModels(notFoundError, handlingEditor) const models = buildModels(notFoundError, handlingEditor)
await require(postAssignationPath)(models)(req, res) await require(postAssignationPath)(models)(req, res)
...@@ -118,6 +122,7 @@ describe('Post assignation route handler', () => { ...@@ -118,6 +122,7 @@ describe('Post assignation route handler', () => {
}) })
delete noAssignationEditor.assignations delete noAssignationEditor.assignations
req.user = noAssignationEditor req.user = noAssignationEditor
req.params.collectionId = standardCollection.id
const res = httpMocks.createResponse() const res = httpMocks.createResponse()
const models = buildModels(standardCollection, noAssignationEditor) const models = buildModels(standardCollection, noAssignationEditor)
await require(postAssignationPath)(models)(req, res) await require(postAssignationPath)(models)(req, res)
...@@ -126,4 +131,44 @@ describe('Post assignation route handler', () => { ...@@ -126,4 +131,44 @@ describe('Post assignation route handler', () => {
const data = JSON.parse(res._getData()) const data = JSON.parse(res._getData())
expect(data.error).toEqual('The user has no assignation') expect(data.error).toEqual('The user has no assignation')
}) })
it('should return an error when the request type the user assignation type do not match', async () => {
const body = {
type: 'aWrongType',
accept: false,
}
const req = httpMocks.createRequest({
body,
})
req.user = handlingEditor
req.params.collectionId = standardCollection.id
const res = httpMocks.createResponse()
const models = buildModels(standardCollection, handlingEditor)
await require(postAssignationPath)(models)(req, res)
expect(res.statusCode).toBe(400)
const data = JSON.parse(res._getData())
expect(data.error).toEqual(
'Request data does not match any user assignation',
)
})
it('should return an error when the request collection and the user assignation collection do not match', async () => {
const body = {
type: 'handlingEditor',
accept: false,
}
const req = httpMocks.createRequest({
body,
})
req.user = handlingEditor
req.params.collectionId = '123'
const res = httpMocks.createResponse()
const models = buildModels(standardCollection, handlingEditor)
await require(postAssignationPath)(models)(req, res)
expect(res.statusCode).toBe(400)
const data = JSON.parse(res._getData())
expect(data.error).toEqual(
'Request data does not match any user assignation',
)
})
}) })
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment