allow overleafId to be passed in to avoid history initialization

This commit is contained in:
Hayden Faulds 2017-10-27 14:56:16 +01:00
parent 670b183c8e
commit 20ea9918c9
2 changed files with 37 additions and 23 deletions

View file

@ -15,27 +15,36 @@ _ = require "underscore"
module.exports = ProjectCreationHandler =
createBlankProject : (owner_id, projectName, callback = (error, project) ->)->
createBlankProject : (owner_id, projectName, overleafId, callback = (error, project) ->)->
metrics.inc("project-creation")
if arguments.length == 3
callback = overleafId
overleafId = null
ProjectDetailsHandler.validateProjectName projectName, (error) ->
return callback(error) if error?
logger.log owner_id:owner_id, projectName:projectName, "creating blank project"
HistoryController.initializeProject (error, history) ->
return callback(error) if error?
rootFolder = new Folder {'name':'rootFolder'}
project = new Project
owner_ref : new ObjectId(owner_id)
name : projectName
if history?.overleaf_id?
project.overleaf.id = history.overleaf_id
if Settings.currentImageName?
project.imageName = Settings.currentImageName
project.rootFolder[0] = rootFolder
User.findById owner_id, "ace.spellCheckLanguage", (err, user)->
project.spellCheckLanguage = user.ace.spellCheckLanguage
project.save (err)->
return callback(err) if err?
callback err, project
if overleafId?
ProjectCreationHandler._createBlankProject owner_id, projectName, overleafId, callback
else
HistoryController.initializeProject (error, history) ->
return callback(error) if error?
ProjectCreationHandler._createBlankProject owner_id, projectName, history.overleaf_id, callback
_createBlankProject : (owner_id, projectName, overleafId, callback = (error, project) ->)->
rootFolder = new Folder {'name':'rootFolder'}
project = new Project
owner_ref : new ObjectId(owner_id)
name : projectName
project.overleaf.id = overleafId
if Settings.currentImageName?
project.imageName = Settings.currentImageName
project.rootFolder[0] = rootFolder
User.findById owner_id, "ace.spellCheckLanguage", (err, user)->
project.spellCheckLanguage = user.ace.spellCheckLanguage
project.save (err)->
return callback(err) if err?
callback err, project
createBasicProject : (owner_id, projectName, callback = (error, project) ->)->
self = @

View file

@ -64,10 +64,11 @@ describe 'ProjectCreationHandler', ->
describe 'Creating a Blank project', ->
beforeEach ->
@overleaf_id = 1234
@HistoryController.initializeProject = sinon.stub().callsArgWith(0, null, { @overleaf_id })
@ProjectModel::save = sinon.stub().callsArg(0)
describe "successfully", ->
it "should save the project", (done)->
@handler.createBlankProject ownerId, projectName, =>
@ProjectModel::save.called.should.equal true
@ -79,14 +80,18 @@ describe 'ProjectCreationHandler', ->
(project.owner_ref + "").should.equal ownerId
done()
it "should initialize the project history", (done)->
it "should initialize the project overleaf if history id not provided", (done)->
@handler.createBlankProject ownerId, projectName, done
@HistoryController.initializeProject.calledWith().should.equal true
it "should set the overleaf id", (done)->
overleaf_id = 1234
@HistoryController.initializeProject = sinon.stub().callsArgWith(0, null, { overleaf_id })
@handler.createBlankProject ownerId, projectName, (err, project)->
it "should set the overleaf id if overleaf id not provided", (done)->
@handler.createBlankProject ownerId, projectName, (err, project)=>
project.overleaf.id.should.equal @overleaf_id
done()
it "should set the overleaf id if overleaf id provided", (done)->
overleaf_id = 2345
@handler.createBlankProject ownerId, projectName, overleaf_id, (err, project)->
project.overleaf.id.should.equal overleaf_id
done()