From 20ea9918c9753fb1ec193d297329898bfc376bf7 Mon Sep 17 00:00:00 2001 From: Hayden Faulds Date: Fri, 27 Oct 2017 14:56:16 +0100 Subject: [PATCH] allow overleafId to be passed in to avoid history initialization --- .../Project/ProjectCreationHandler.coffee | 43 +++++++++++-------- .../ProjectCreationHandlerTests.coffee | 17 +++++--- 2 files changed, 37 insertions(+), 23 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectCreationHandler.coffee b/services/web/app/coffee/Features/Project/ProjectCreationHandler.coffee index 395ab92c51..dfc6313983 100644 --- a/services/web/app/coffee/Features/Project/ProjectCreationHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectCreationHandler.coffee @@ -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 = @ diff --git a/services/web/test/UnitTests/coffee/Project/ProjectCreationHandlerTests.coffee b/services/web/test/UnitTests/coffee/Project/ProjectCreationHandlerTests.coffee index fc590c2bf5..e9a746fc3d 100644 --- a/services/web/test/UnitTests/coffee/Project/ProjectCreationHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Project/ProjectCreationHandlerTests.coffee @@ -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()