call DocumentUpdaterHandle.updateProjectStructure from ProjectEntityHandler.addDoc and addFile

pass in user_id as null
This commit is contained in:
Hayden Faulds 2017-11-10 16:32:19 +00:00
parent 6e84c635cf
commit c1481d596f
2 changed files with 49 additions and 12 deletions

View file

@ -177,7 +177,14 @@ module.exports = ProjectEntityHandler =
rev: 0 rev: 0
}, (err) -> }, (err) ->
return callback(err) if err? return callback(err) if err?
callback(null, doc, folder_id) newDoc =
doc: doc
path: result?.path?.fileSystem
docLines: docLines.join('\n')
documentUpdaterHandler = require('../../Features/DocumentUpdater/DocumentUpdaterHandler')
documentUpdaterHandler.updateProjectStructure project_id, null, [], [newDoc], [], [], (error) ->
return callback(error) if error?
callback null, doc, folder_id
restoreDoc: (project_id, doc_id, name, callback = (error, doc, folder_id) ->) -> restoreDoc: (project_id, doc_id, name, callback = (error, doc, folder_id) ->) ->
# getDoc will return the deleted doc's lines, but we don't actually remove # getDoc will return the deleted doc's lines, but we don't actually remove
@ -191,15 +198,15 @@ module.exports = ProjectEntityHandler =
if err? if err?
logger.err project_id:project_id, err:err, "error getting project for add file" logger.err project_id:project_id, err:err, "error getting project for add file"
return callback(err) return callback(err)
ProjectEntityHandler.addFileWithProject project, folder_id, fileName, path, callback ProjectEntityHandler.addFileWithProject project, folder_id, fileName, path, null, callback
addFileWithProject: (project, folder_id, fileName, path, callback = (error, fileRef, folder_id) ->)-> addFileWithProject: (project, folder_id, fileName, path, userId, callback = (error, fileRef, folder_id) ->)->
project_id = project._id project_id = project._id
logger.log project_id: project._id, folder_id: folder_id, file_name: fileName, path:path, "adding file" logger.log project_id: project._id, folder_id: folder_id, file_name: fileName, path:path, "adding file"
return callback(err) if err? return callback(err) if err?
confirmFolder project, folder_id, (folder_id)-> confirmFolder project, folder_id, (folder_id)->
fileRef = new File name : fileName fileRef = new File name : fileName
FileStoreHandler.uploadFileFromDisk project._id, fileRef._id, path, (err)-> FileStoreHandler.uploadFileFromDisk project._id, fileRef._id, path, (err, fileStoreUrl)->
if err? if err?
logger.err err:err, project_id: project._id, folder_id: folder_id, file_name: fileName, fileRef:fileRef, "error uploading image to s3" logger.err err:err, project_id: project._id, folder_id: folder_id, file_name: fileName, fileRef:fileRef, "error uploading image to s3"
return callback(err) return callback(err)
@ -209,7 +216,14 @@ module.exports = ProjectEntityHandler =
return callback(err) return callback(err)
tpdsUpdateSender.addFile {project_id:project._id, file_id:fileRef._id, path:result?.path?.fileSystem, project_name:project.name, rev:fileRef.rev}, (err) -> tpdsUpdateSender.addFile {project_id:project._id, file_id:fileRef._id, path:result?.path?.fileSystem, project_name:project.name, rev:fileRef.rev}, (err) ->
return callback(err) if err? return callback(err) if err?
callback(null, fileRef, folder_id) newFile =
file: fileRef
path: result?.path?.fileSystem
url: fileStoreUrl
documentUpdaterHandler = require('../../Features/DocumentUpdater/DocumentUpdaterHandler')
documentUpdaterHandler.updateProjectStructure project_id, userId, [], [], [], [newFile], (error) ->
return callback(error) if error?
callback null, fileRef, folder_id
replaceFile: (project_id, file_id, fsPath, callback)-> replaceFile: (project_id, file_id, fsPath, callback)->
ProjectGetter.getProject project_id, {name:true}, (err, project) -> ProjectGetter.getProject project_id, {name:true}, (err, project) ->

View file

@ -17,8 +17,9 @@ describe 'ProjectEntityHandler', ->
userId = 1234 userId = 1234
beforeEach -> beforeEach ->
@fileUrl = 'filestore.example.com/file'
@FileStoreHandler = @FileStoreHandler =
uploadFileFromDisk:(project_id, fileRef, localImagePath, callback)->callback() uploadFileFromDisk: sinon.stub().callsArgWith(3, null, @fileUrl)
copyFile: sinon.stub().callsArgWith(4, null) copyFile: sinon.stub().callsArgWith(4, null)
@tpdsUpdateSender = @tpdsUpdateSender =
addDoc:sinon.stub().callsArg(1) addDoc:sinon.stub().callsArg(1)
@ -67,6 +68,9 @@ describe 'ProjectEntityHandler', ->
findElement : sinon.stub() findElement : sinon.stub()
@settings = @settings =
maxEntitiesPerProject:200 maxEntitiesPerProject:200
@documentUpdaterHandler =
updateProjectStructure: sinon.stub().callsArg(6)
deleteDoc: sinon.stub().callsArg(2)
@ProjectEntityHandler = SandboxedModule.require modulePath, requires: @ProjectEntityHandler = SandboxedModule.require modulePath, requires:
'../../models/Project': Project:@ProjectModel '../../models/Project': Project:@ProjectModel
'../../models/Doc': Doc:@DocModel '../../models/Doc': Doc:@DocModel
@ -75,7 +79,7 @@ describe 'ProjectEntityHandler', ->
'../FileStore/FileStoreHandler':@FileStoreHandler '../FileStore/FileStoreHandler':@FileStoreHandler
'../ThirdPartyDataStore/TpdsUpdateSender':@tpdsUpdateSender '../ThirdPartyDataStore/TpdsUpdateSender':@tpdsUpdateSender
'./ProjectLocator': @projectLocator './ProjectLocator': @projectLocator
'../../Features/DocumentUpdater/DocumentUpdaterHandler':@documentUpdaterHandler = {} '../../Features/DocumentUpdater/DocumentUpdaterHandler':@documentUpdaterHandler
'../Docstore/DocstoreManager': @DocstoreManager = {} '../Docstore/DocstoreManager': @DocstoreManager = {}
'logger-sharelatex': @logger = {log:sinon.stub(), error: sinon.stub(), err:->} 'logger-sharelatex': @logger = {log:sinon.stub(), error: sinon.stub(), err:->}
'./ProjectUpdateHandler': @projectUpdater './ProjectUpdateHandler': @projectUpdater
@ -184,7 +188,6 @@ describe 'ProjectEntityHandler', ->
describe "_cleanUpEntity", -> describe "_cleanUpEntity", ->
beforeEach -> beforeEach ->
@entity_id = "4eecaffcbffa66588e000009" @entity_id = "4eecaffcbffa66588e000009"
@documentUpdaterHandler.deleteDoc = sinon.stub().callsArg(2)
@FileStoreHandler.deleteFile = sinon.stub().callsArg(2) @FileStoreHandler.deleteFile = sinon.stub().callsArg(2)
@ProjectEntityHandler.unsetRootDoc = sinon.stub().callsArg(1) @ProjectEntityHandler.unsetRootDoc = sinon.stub().callsArg(1)
@ -240,7 +243,6 @@ describe 'ProjectEntityHandler', ->
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, path: @pathAfterMove) @ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, path: @pathAfterMove)
@ProjectGetter.getProject.callsArgWith(2, null, @project) @ProjectGetter.getProject.callsArgWith(2, null, @project)
@tpdsUpdateSender.moveEntity = sinon.stub() @tpdsUpdateSender.moveEntity = sinon.stub()
@documentUpdaterHandler.updateProjectStructure = sinon.stub().callsArg(6)
@ProjectEntityHandler.getAllEntitiesFromProject = sinon.stub() @ProjectEntityHandler.getAllEntitiesFromProject = sinon.stub()
@ProjectEntityHandler.getAllEntitiesFromProject @ProjectEntityHandler.getAllEntitiesFromProject
.onFirstCall() .onFirstCall()
@ -484,6 +486,15 @@ describe 'ProjectEntityHandler', ->
.calledWith(project_id, @doc._id.toString(), @lines) .calledWith(project_id, @doc._id.toString(), @lines)
.should.equal true .should.equal true
it "should should send the change in project structure to the doc updater", () ->
newDoc =
doc: @doc
path: @path
docLines: @lines.join('\n')
@documentUpdaterHandler.updateProjectStructure
.calledWith(project_id, null, [], [newDoc], [], [])
.should.equal true
describe "restoreDoc", -> describe "restoreDoc", ->
beforeEach -> beforeEach ->
@name = "doc-name" @name = "doc-name"
@ -512,7 +523,10 @@ describe 'ProjectEntityHandler', ->
describe 'addFile', -> describe 'addFile', ->
fileName = "something.jpg" fileName = "something.jpg"
beforeEach -> beforeEach ->
@fileSystemPath = "somehintg"
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, {path:{fileSystem: @fileSystemPath}})
@filePath = "somewhere" @filePath = "somewhere"
it 'should upload it via the FileStoreHandler', (done)-> it 'should upload it via the FileStoreHandler', (done)->
@FileStoreHandler.uploadFileFromDisk = (passedProject_id, file_id, filePath, callback)=> @FileStoreHandler.uploadFileFromDisk = (passedProject_id, file_id, filePath, callback)=>
file_id.should.equal "file_id" file_id.should.equal "file_id"
@ -533,7 +547,6 @@ describe 'ProjectEntityHandler', ->
@ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, (err, fileRef, parentFolder)-> @ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, (err, fileRef, parentFolder)->
it 'should return doc and parent folder', (done)-> it 'should return doc and parent folder', (done)->
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, {path:{fileSystem:"somehintg"}})
@ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, (err, fileRef, parentFolder)-> @ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, (err, fileRef, parentFolder)->
parentFolder.should.equal folder_id parentFolder.should.equal folder_id
fileRef.name.should.equal fileName fileRef.name.should.equal fileName
@ -556,6 +569,18 @@ describe 'ProjectEntityHandler', ->
@ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, (err, fileRef, parentFolder)-> @ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, (err, fileRef, parentFolder)->
it "should should send the change in project structure to the doc updater", (done) ->
@documentUpdaterHandler.updateProjectStructure = (project_id, user_id, oldDocs, newDocs, oldFiles, newFiles) =>
project_id.should.equal project_id
newFiles.length.should.equal 1
newFile = newFiles[0]
newFile.file.name.should.equal fileName
newFile.path.should.equal @fileSystemPath
newFile.url.should.equal @fileUrl
done()
@ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, () ->
describe 'replacing a file', -> describe 'replacing a file', ->
beforeEach -> beforeEach ->
@ -575,12 +600,10 @@ describe 'ProjectEntityHandler', ->
done() done()
it 'should tell the file store handler to upload the file from disk', (done)-> it 'should tell the file store handler to upload the file from disk', (done)->
@FileStoreHandler.uploadFileFromDisk = sinon.stub().callsArgWith(3)
@ProjectEntityHandler.replaceFile project_id, @file_id, @fsPath, => @ProjectEntityHandler.replaceFile project_id, @file_id, @fsPath, =>
@FileStoreHandler.uploadFileFromDisk.calledWith(project_id, @file_id, @fsPath).should.equal true @FileStoreHandler.uploadFileFromDisk.calledWith(project_id, @file_id, @fsPath).should.equal true
done() done()
it 'should send the file to the tpds with an incremented rev', (done)-> it 'should send the file to the tpds with an incremented rev', (done)->
@tpdsUpdateSender.addFile = (options)=> @tpdsUpdateSender.addFile = (options)=>
options.project_id.should.equal project_id options.project_id.should.equal project_id