From 5378890e573eb8eae991635ccaec01e0845978a9 Mon Sep 17 00:00:00 2001 From: Henry Oswald Date: Mon, 7 Apr 2014 12:18:24 +0100 Subject: [PATCH] moved rename entity to proj entity handler --- .../Features/Editor/EditorController.coffee | 2 +- .../Project/ProjectEntityHandler.coffee | 21 +++++++++++++++++++ .../app/coffee/handlers/ProjectHandler.coffee | 20 +----------------- .../Editor/EditorControllerTests.coffee | 4 ++-- .../Project/ProjectEntityHandlerTests.coffee | 21 +++++++++++++++++++ 5 files changed, 46 insertions(+), 22 deletions(-) diff --git a/services/web/app/coffee/Features/Editor/EditorController.coffee b/services/web/app/coffee/Features/Editor/EditorController.coffee index 413ea4609e..80f6280ffe 100644 --- a/services/web/app/coffee/Features/Editor/EditorController.coffee +++ b/services/web/app/coffee/Features/Editor/EditorController.coffee @@ -246,7 +246,7 @@ module.exports = EditorController = newName = sanitize.escape(newName) Metrics.inc "editor.rename-entity" logger.log entity_id:entity_id, entity_id:entity_id, entity_id:entity_id, "reciving new name for entity for project" - ProjectHandler.renameEntity project_id, entity_id, entityType, newName, => + ProjectEntityHandler.renameEntity project_id, entity_id, entityType, newName, => if newName.length > 0 EditorRealTimeController.emitToRoom project_id, 'reciveEntityRename', entity_id, newName callback?() diff --git a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee index 0469e832ac..c3420e8411 100644 --- a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee @@ -283,6 +283,27 @@ module.exports = ProjectEntityHandler = return callback(error) if error? callback null + + renameEntity: (project_id, entity_id, entityType, newName, callback)-> + logger.log(entity_id: entity_id, project_id: project_id, ('renaming '+entityType)) + if !entityType? + logger.err err: "No entityType set", project_id: project_id, entity_id: entity_id + return callback("No entityType set") + entityType = entityType.toLowerCase() + Project.findById project_id, (err, project)=> + projectLocator.findElement {project:project, element_id:entity_id, type:entityType}, (err, entity, path, folder)=> + if err? + return callback err + conditons = {_id:project_id} + update = "$set":{} + namePath = path.mongo+".name" + update["$set"][namePath] = newName + endPath = path.fileSystem.replace(entity.name, newName) + tpdsUpdateSender.moveEntity({project_id:project_id, startPath:path.fileSystem, endPath:endPath, project_name:project.name, rev:entity.rev}) + Project.update conditons, update, {}, (err)-> + if callback? + callback err + _cleanUpEntity: (project, entity, entityType, sl_req_id, callback = (error) ->) -> {callback, sl_req_id} = slReqIdHelper.getCallbackAndReqId(callback, sl_req_id) diff --git a/services/web/app/coffee/handlers/ProjectHandler.coffee b/services/web/app/coffee/handlers/ProjectHandler.coffee index 3882c71390..9ba0a9c015 100755 --- a/services/web/app/coffee/handlers/ProjectHandler.coffee +++ b/services/web/app/coffee/handlers/ProjectHandler.coffee @@ -19,25 +19,7 @@ tagsHandler = require('../Features/Tags/TagsHandler') module.exports = class ProjectHandler - renameEntity: (project_id, entity_id, entityType, newName, callback)-> - logger.log(entity_id: entity_id, project_id: project_id, ('renaming '+entityType)) - if !entityType? - logger.err err: "No entityType set", project_id: project_id, entity_id: entity_id - return callback("No entityType set") - entityType = entityType.toLowerCase() - Project.findById project_id, (err, project)=> - projectLocator.findElement {project:project, element_id:entity_id, type:entityType}, (err, entity, path, folder)=> - if err? - return callback err - conditons = {_id:project_id} - update = "$set":{} - namePath = path.mongo+".name" - update["$set"][namePath] = newName - endPath = path.fileSystem.replace(entity.name, newName) - tpdsUpdateSender.moveEntity({project_id:project_id, startPath:path.fileSystem, endPath:endPath, project_name:project.name, rev:entity.rev}) - Project.update conditons, update, {}, (err)-> - if callback? - callback err + renameProject: (project_id, window_id, newName, callback)-> logger.log project_id: project_id, "renaming project" diff --git a/services/web/test/UnitTests/coffee/Editor/EditorControllerTests.coffee b/services/web/test/UnitTests/coffee/Editor/EditorControllerTests.coffee index 55213fdda8..1f2f524d3d 100644 --- a/services/web/test/UnitTests/coffee/Editor/EditorControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Editor/EditorControllerTests.coffee @@ -629,12 +629,12 @@ describe "EditorController", -> @entity_id = "entity_id_here" @entityType = "doc" @newName = "bobsfile.tex" - @ProjectHandler::renameEntity = sinon.stub().callsArgWith(4, @err) + @ProjectEntityHandler.renameEntity = sinon.stub().callsArgWith(4, @err) @EditorRealTimeController.emitToRoom = sinon.stub() it "should call the project handler", (done)-> @EditorController.renameEntity @project_id, @entity_id, @entityType, @newName, => - @ProjectHandler::renameEntity.calledWith(@project_id, @entity_id, @entityType, @newName).should.equal true + @ProjectEntityHandler.renameEntity.calledWith(@project_id, @entity_id, @entityType, @newName).should.equal true done() diff --git a/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee b/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee index 3835b7909b..cc193c5243 100644 --- a/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee @@ -682,3 +682,24 @@ describe 'project entity handler', -> @ProjectEntityHandler.copyFileFromExistingProject project_id, folder_id, oldProject_id, oldFileRef, (err, fileRef, parentFolder)-> + + describe "renameEntity", -> + beforeEach -> + @entity_id = "4eecaffcbffa66588e000009" + @entityType = "doc" + @newName = "new.tex" + @path = mongo: "mongo.path", fileSystem: "/file/system/old.tex" + @projectLocator.findElement = sinon.stub().callsArgWith(1, null, @entity = { _id: @entity_id, name:"old.tex", rev:4 }, @path) + @ProjectModel.update = sinon.stub().callsArgWith(3) + @tpdsUpdateSender.moveEntity = sinon.stub() + + it "should update the name in mongo", (done)-> + + @ProjectEntityHandler.renameEntity @project_id, @entity_id, @entityType, @newName, => + @ProjectModel.update.calledWith({_id : @project_id}, {"$set":{"mongo.path.name":@newName}}).should.equal true + done() + + it "should send the update to the tpds", (done)-> + @ProjectEntityHandler.renameEntity @project_id, @entity_id, @entityType, @newName, => + @tpdsUpdateSender.moveEntity.calledWith({project_id:@project_id, startPath:@path.fileSystem, endPath:"/file/system/new.tex", project_name:@project.name, rev:4}).should.equal true + done()