move .putElement into ProjectEntityHandler with tests
This commit is contained in:
@@ -28,6 +28,7 @@ describe 'ProjectEntityHandler', ->
|
||||
folders:[
|
||||
{name:"level1", folders:[]}
|
||||
]
|
||||
@ProjectUpdateStub = sinon.stub()
|
||||
@ProjectModel = class Project
|
||||
constructor:(options)->
|
||||
@._id = project_id
|
||||
@@ -35,6 +36,7 @@ describe 'ProjectEntityHandler', ->
|
||||
@rev = 0
|
||||
save:(callback)->callback()
|
||||
rootFolder:[@rootFolder]
|
||||
@ProjectModel.update = @ProjectUpdateStub
|
||||
|
||||
@DocModel = class Doc
|
||||
constructor:(options)->
|
||||
@@ -57,8 +59,10 @@ describe 'ProjectEntityHandler', ->
|
||||
@ProjectModel.getProject = (project_id, fields, callback)=> callback(null, @project)
|
||||
@ProjectGetter =
|
||||
getProjectWithOnlyFolders : (project_id, callback)=> callback(null, @project)
|
||||
@ProjectModel.putElement = (project_id, folder_id, doc, type, callback)-> callback(null, {path:{fileSystem:"somehintg"}})
|
||||
getProject:sinon.stub()
|
||||
@projectUpdater = markAsUpdated:sinon.stub()
|
||||
@projectLocator =
|
||||
findElement : sinon.stub()
|
||||
@ProjectEntityHandler = SandboxedModule.require modulePath, requires:
|
||||
'../../models/Project': Project:@ProjectModel
|
||||
'../../models/Doc': Doc:@DocModel
|
||||
@@ -66,10 +70,10 @@ describe 'ProjectEntityHandler', ->
|
||||
'../../models/File': File:@FileModel
|
||||
'../FileStore/FileStoreHandler':@FileStoreHandler
|
||||
'../ThirdPartyDataStore/TpdsUpdateSender':@tpdsUpdateSender
|
||||
'./ProjectLocator':@projectLocator = {}
|
||||
'./ProjectLocator': @projectLocator
|
||||
'../../Features/DocumentUpdater/DocumentUpdaterHandler':@documentUpdaterHandler = {}
|
||||
'../Docstore/DocstoreManager': @DocstoreManager = {}
|
||||
'logger-sharelatex': @logger = {log:sinon.stub(), error: sinon.stub()}
|
||||
'logger-sharelatex': @logger = {log:sinon.stub(), error: sinon.stub(), err:->}
|
||||
'./ProjectUpdateHandler': @projectUpdater
|
||||
"./ProjectGetter": @ProjectGetter
|
||||
|
||||
@@ -226,7 +230,7 @@ describe 'ProjectEntityHandler', ->
|
||||
fileSystem: "/somewhere/else.txt"
|
||||
}
|
||||
@ProjectEntityHandler._removeElementFromMongoArray = sinon.stub().callsArg(3)
|
||||
@ProjectModel.putElement = sinon.stub().callsArgWith(4, null, path: @pathAfterMove)
|
||||
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, path: @pathAfterMove)
|
||||
@tpdsUpdateSender.moveEntity = sinon.stub().callsArg(1)
|
||||
|
||||
describe "moving a doc", ->
|
||||
@@ -259,7 +263,7 @@ describe 'ProjectEntityHandler', ->
|
||||
.should.equal true
|
||||
|
||||
it "should put the element back in the new folder", ->
|
||||
@ProjectModel.putElement
|
||||
@ProjectEntityHandler._putElement
|
||||
.calledWith(
|
||||
project_id,
|
||||
folder_id,
|
||||
@@ -327,7 +331,7 @@ describe 'ProjectEntityHandler', ->
|
||||
.should.equal true
|
||||
|
||||
it "should put the element back in the new folder", ->
|
||||
@ProjectModel.putElement
|
||||
@ProjectEntityHandler._putElement
|
||||
.calledWith(
|
||||
project_id,
|
||||
@move_to_folder_id,
|
||||
@@ -407,7 +411,7 @@ describe 'ProjectEntityHandler', ->
|
||||
@lines = ['1234','abc']
|
||||
@path = "/path/to/doc"
|
||||
|
||||
@ProjectModel.putElement = sinon.stub().callsArgWith(4, null, {path:{fileSystem:@path}})
|
||||
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, {path:{fileSystem:@path}})
|
||||
@callback = sinon.stub()
|
||||
@tpdsUpdateSender.addDoc = sinon.stub().callsArg(1)
|
||||
@DocstoreManager.updateDoc = sinon.stub().callsArgWith(3, null, true, 0)
|
||||
@@ -415,12 +419,12 @@ describe 'ProjectEntityHandler', ->
|
||||
@ProjectEntityHandler.addDoc project_id, folder_id, @name, @lines, @callback
|
||||
|
||||
# Created doc
|
||||
@doc = @ProjectModel.putElement.args[0][2]
|
||||
@doc = @ProjectEntityHandler._putElement.args[0][2]
|
||||
@doc.name.should.equal @name
|
||||
expect(@doc.lines).to.be.undefined
|
||||
|
||||
it 'should call put element', ->
|
||||
@ProjectModel.putElement
|
||||
@ProjectEntityHandler._putElement
|
||||
.calledWith(project_id, folder_id, @doc)
|
||||
.should.equal true
|
||||
|
||||
@@ -482,7 +486,7 @@ describe 'ProjectEntityHandler', ->
|
||||
@ProjectEntityHandler.addFile project_id, folder_id, fileName, @filePath, (err, fileRef, parentFolder)->
|
||||
|
||||
it 'should put file into folder by calling put element', (done)->
|
||||
@ProjectModel.putElement = (passedProject_id, passedFolder_id, passedFileRef, passedType, callback)->
|
||||
@ProjectEntityHandler._putElement = (passedProject_id, passedFolder_id, passedFileRef, passedType, callback)->
|
||||
passedProject_id.should.equal project_id
|
||||
passedFolder_id.should.equal folder_id
|
||||
passedFileRef.name.should.equal fileName
|
||||
@@ -492,6 +496,7 @@ describe 'ProjectEntityHandler', ->
|
||||
@ProjectEntityHandler.addFile project_id, folder_id, fileName, {}, (err, fileRef, parentFolder)->
|
||||
|
||||
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)->
|
||||
parentFolder.should.equal folder_id
|
||||
fileRef.name.should.equal fileName
|
||||
@@ -502,7 +507,7 @@ describe 'ProjectEntityHandler', ->
|
||||
opts =
|
||||
path : "/somehwere/idsadsds"
|
||||
project_id : project_id
|
||||
@ProjectModel.putElement = (project_id, folder_id, doc, type, callback)-> callback(null, {path:{fileSystem:opts.path}})
|
||||
@ProjectEntityHandler._putElement = (project_id, folder_id, doc, type, callback)-> callback(null, {path:{fileSystem:opts.path}})
|
||||
|
||||
@tpdsUpdateSender.addFile = (options)=>
|
||||
options.project_id.should.equal project_id
|
||||
@@ -572,7 +577,7 @@ describe 'ProjectEntityHandler', ->
|
||||
folderName = "folder1234"
|
||||
|
||||
it 'should call put element', (done)->
|
||||
@ProjectModel.putElement = (passedProject_id, passedFolder_id, passedFolder, passedType, callback)->
|
||||
@ProjectEntityHandler._putElement = (passedProject_id, passedFolder_id, passedFolder, passedType, callback)->
|
||||
passedProject_id.should.equal project_id
|
||||
passedFolder_id.should.equal folder_id
|
||||
passedFolder.name.should.equal folderName
|
||||
@@ -581,6 +586,7 @@ describe 'ProjectEntityHandler', ->
|
||||
@ProjectEntityHandler.addFolder project_id, folder_id, folderName, (err, folder, parentFolder)->
|
||||
|
||||
it 'should return the folder and parent folder', (done)->
|
||||
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4)
|
||||
@ProjectEntityHandler.addFolder project_id, folder_id, folderName, (err, folder, parentFolder)->
|
||||
parentFolder.should.equal folder_id
|
||||
folder.name.should.equal folderName
|
||||
@@ -873,14 +879,17 @@ describe 'ProjectEntityHandler', ->
|
||||
oldFileRef = {name:fileName, _id:"oldFileRef"}
|
||||
beforeEach ->
|
||||
@ProjectModel.getProject = (project_id, fields, callback)=> callback(null, {name:@project.name, _id:@project._id})
|
||||
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, {path:{fileSystem:"somehintg"}})
|
||||
|
||||
|
||||
it 'should copy the file in FileStoreHandler', (done)->
|
||||
@ProjectEntityHandler._putElement = sinon.stub().callsArgWith(4, null, {path:{fileSystem:"somehintg"}})
|
||||
@ProjectEntityHandler.copyFileFromExistingProject project_id, folder_id, oldProject_id, oldFileRef, (err, fileRef, parentFolder)=>
|
||||
@FileStoreHandler.copyFile.calledWith(oldProject_id, oldFileRef._id, project_id, fileRef._id).should.equal true
|
||||
done()
|
||||
|
||||
it 'should put file into folder by calling put element', (done)->
|
||||
@ProjectModel.putElement = (passedProject_id, passedFolder_id, passedFileRef, passedType, callback)->
|
||||
@ProjectEntityHandler._putElement = (passedProject_id, passedFolder_id, passedFileRef, passedType, callback)->
|
||||
passedProject_id.should.equal project_id
|
||||
passedFolder_id.should.equal folder_id
|
||||
passedFileRef.name.should.equal fileName
|
||||
@@ -900,7 +909,7 @@ describe 'ProjectEntityHandler', ->
|
||||
opts =
|
||||
path : "/somehwere/idsadsds"
|
||||
project_id : project_id
|
||||
@ProjectModel.putElement = (project_id, folder_id, doc, type, callback)-> callback(null, {path:{fileSystem:opts.path}})
|
||||
@ProjectEntityHandler._putElement = (project_id, folder_id, doc, type, callback)-> callback(null, {path:{fileSystem:opts.path}})
|
||||
|
||||
@tpdsUpdateSender.addFile = (options)=>
|
||||
options.project_id.should.equal project_id
|
||||
@@ -1009,4 +1018,53 @@ describe 'ProjectEntityHandler', ->
|
||||
@ProjectEntityHandler.unsetRootDoc.called.should.equal false
|
||||
|
||||
it "should call the callback", ->
|
||||
@callback.called.should.equal true
|
||||
@callback.called.should.equal true
|
||||
|
||||
|
||||
describe "_putElement", ->
|
||||
beforeEach ->
|
||||
@project_id = project_id
|
||||
@project =
|
||||
_id: ObjectId(project_id)
|
||||
rootFolder: [_id:ObjectId()]
|
||||
@folder =
|
||||
_id: ObjectId()
|
||||
name: "someFolder"
|
||||
@doc =
|
||||
_id: ObjectId()
|
||||
name: "new.tex"
|
||||
@path = mongo: "mongo.path", fileSystem: "/file/system/old.tex"
|
||||
@ProjectGetter.getProject.callsArgWith(2, null, @project)
|
||||
@projectLocator.findElement.callsArgWith(1, null, @folder, @path)
|
||||
@ProjectUpdateStub.callsArgWith(3)
|
||||
|
||||
|
||||
describe "updating the project", ->
|
||||
|
||||
|
||||
it "should use the correct mongo path", (done)->
|
||||
@ProjectEntityHandler._putElement @project_id, @folder._id, @doc, "docs", (err)=>
|
||||
@ProjectModel.update.args[0][0]._id.should.equal @project_id
|
||||
assert.deepEqual @ProjectModel.update.args[0][1].$push[@path.mongo+".docs"], @doc
|
||||
done()
|
||||
|
||||
it "should add an s onto the type if not included", (done)->
|
||||
@ProjectEntityHandler._putElement @project_id, @folder._id, @doc, "doc", (err)=>
|
||||
assert.deepEqual @ProjectModel.update.args[0][1].$push[@path.mongo+".docs"], @doc
|
||||
done()
|
||||
|
||||
|
||||
it "should not call update if elemenet is null", (done)->
|
||||
@ProjectEntityHandler._putElement @project_id, @folder._id, null, "doc", (err)=>
|
||||
@ProjectModel.update.called.should.equal false
|
||||
done()
|
||||
|
||||
it "should default to root folder insert", (done)->
|
||||
@ProjectEntityHandler._putElement @project_id, null, @doc, "doc", (err)=>
|
||||
@projectLocator.findElement.args[0][0].element_id.should.equal @project.rootFolder[0]._id
|
||||
done()
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user