Просмотр исходного кода

allow overleafId to be passed in to avoid history initialization

Hayden Faulds 9 лет назад
Родитель
Сommit
20ea9918c9

+ 26 - 17
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 = @

+ 11 - 6
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()