type-check ProjectGetter.getProject and getProjectWithoutLock arguments

This commit is contained in:
Hayden Faulds 2018-02-15 15:20:14 +00:00
parent 693c8e8c60
commit dd582d1b2e
4 changed files with 26 additions and 12 deletions

View file

@ -37,7 +37,7 @@ module.exports = ProjectEntityMongoUpdateHandler = self =
self._putElement project, folder_id, doc, "doc", callback
addFile: wrapWithLock (project_id, folder_id, fileRef, callback = (error, result, project) ->)->
ProjectGetter.getProjectWithoutLock project_id, {rootFolder:true, name:true}, (err, project) ->
ProjectGetter.getProjectWithoutLock project_id, {rootFolder:true, name:true}, (err, project) ->
if err?
logger.err project_id:project_id, err:err, "error getting project for add file"
return callback(err)

View file

@ -23,11 +23,18 @@ module.exports = ProjectGetter =
excludes["rootFolder#{Array(i).join(".folders")}.fileRefs"] = 0
ProjectGetter.getProject project_id, excludes, callback
getProject: (project_id, projection, callback = (error, project) ->) ->
getProject: (project_id, projection, callback) ->
if !project_id?
return callback("no project_id provided")
return callback(new Error("no project_id provided"))
if projection?.rootFolder
if typeof(projection) == "function" && !callback?
callback = projection
projection = {}
if typeof(projection) != "object"
return callback(new Error("projection is not an object"))
if projection?.rootFolder || Object.keys(projection).length == 0
ProjectEntityMongoUpdateHandler = require './ProjectEntityMongoUpdateHandler'
lockKey = ProjectEntityMongoUpdateHandler.getProjectMongoLockKey project_id
LockManager.runWithLock lockKey,
@ -36,9 +43,16 @@ module.exports = ProjectGetter =
else
ProjectGetter.getProjectWithoutLock project_id, projection, callback
getProjectWithoutLock: (project_id, projection, callback = (error, project) ->) ->
if typeof(projection) == "function"
getProjectWithoutLock: (project_id, projection, callback) ->
if !project_id?
return callback(new Error("no project_id provided"))
if typeof(projection) == "function" && !callback?
callback = projection
projection = {}
if typeof(projection) != "object"
return callback(new Error("projection is not an object"))
if typeof project_id == "string"
query = _id: ObjectId(project_id)

View file

@ -80,13 +80,13 @@ describe "ProjectStructureChanges", ->
before (done) ->
MockDocUpdaterApi.clearProjectStructureUpdates()
ProjectGetter.getProject @example_project_id, (error, projects) =>
ProjectGetter.getProject @example_project_id, (error, project) =>
throw error if error?
@owner.request.post {
uri: "project/#{@example_project_id}/doc",
json:
name: 'new.tex'
parent_folder_id: projects[0].rootFolder[0]._id
parent_folder_id: project.rootFolder[0]._id
}, (error, res, body) =>
throw error if error?
if res.statusCode < 200 || res.statusCode >= 300
@ -137,9 +137,9 @@ describe "ProjectStructureChanges", ->
describe "uploading a file", ->
before (done) ->
ProjectGetter.getProject @example_project_id, (error, projects) =>
ProjectGetter.getProject @example_project_id, (error, project) =>
throw error if error?
@root_folder_id = projects[0].rootFolder[0]._id.toString()
@root_folder_id = project.rootFolder[0]._id.toString()
done()
beforeEach () ->

View file

@ -28,10 +28,10 @@ describe "TpdsUpdateTests", ->
done()
it "should have deleted the file", (done) ->
ProjectGetter.getProject @project_id, (error, [project]) ->
ProjectGetter.getProject @project_id, (error, project) ->
throw error if error?
projectFolder = project.rootFolder[0]
for doc in projectFolder.docs
if doc.name == "main.tex"
throw new Error("expected main.tex to have been deleted")
done()
done()