Add unit test for ProjectController.projectEntitiesJson

This commit is contained in:
Shane Kilkelly
2018-05-22 16:40:39 +01:00
parent b1c1cdecef
commit 4daf062be9
2 changed files with 60 additions and 13 deletions
@@ -547,6 +547,54 @@ describe "ProjectController", ->
done()
@ProjectController.userProjectsJson @req, @res, @next
describe 'projectEntitiesJson', ->
beforeEach () ->
@AuthenticationController.getLoggedInUserId = sinon.stub().returns 'abc'
@req.params = {Project_id: 'abcd'}
@project = { _id: 'abcd' }
@docs = [
{path: '/things/b.txt', doc: true},
{path: '/main.tex', doc: true}
]
@files = [
{path: '/things/a.txt'}
]
@ProjectGetter.getProject = sinon.stub().callsArgWith(1, null, @project)
@ProjectEntityHandler.getAllEntitiesFromProject = sinon.stub().callsArgWith(1, null, @docs, @files)
describe 'when the user can access the project', ->
beforeEach () ->
@AuthorizationManager.canUserReadProject = sinon.stub().callsArgWith(3, null, true)
it 'should produce a list of entities', (done) ->
@res.json = (data) =>
expect(data).to.deep.equal {
project_id: 'abcd',
entities: [
{path: '/main.tex', type: 'doc'},
{path: '/things/a.txt', type: 'file'},
{path: '/things/b.txt', type: 'doc'}
]
}
expect(@ProjectGetter.getProject.callCount).to.equal 1
expect(@ProjectEntityHandler.getAllEntitiesFromProject.callCount).to.equal 1
done()
@ProjectController.projectEntitiesJson @req, @res, @next
describe 'when the user cannot access the project', ->
beforeEach () ->
@AuthorizationManager.canUserReadProject = sinon.stub().callsArgWith(3, null, false)
it 'should send a 403 response', (done) ->
@res.json = sinon.stub()
@res.sendStatus = (code) =>
expect(code).to.equal 403
expect(@ProjectGetter.getProject.callCount).to.equal 0
expect(@ProjectEntityHandler.getAllEntitiesFromProject.callCount).to.equal 0
expect(@res.json.callCount).to.equal 0
done()
@ProjectController.projectEntitiesJson @req, @res, @next
describe '_isInPercentageRollout', ->
before ->
@ids = [