Merge pull request #1102 from sharelatex/mm-ensure-history-before-export

Ensure project has history before exporting

GitOrigin-RevId: 688131fbbca1cd339433d3b9be57a03a32303b3e
This commit is contained in:
Jessica Lawshe 2018-11-01 12:34:31 -05:00 committed by sharelatex
parent 365158f283
commit 49acb719db
3 changed files with 10 additions and 2 deletions

View file

@ -1,4 +1,5 @@
ProjectGetter = require('../Project/ProjectGetter')
ProjectHistoryHandler = require('../Project/ProjectHistoryHandler')
ProjectLocator = require('../Project/ProjectLocator')
ProjectRootDocManager = require('../Project/ProjectRootDocManager')
UserGetter = require('../User/UserGetter')
@ -35,6 +36,8 @@ module.exports = ExportsHandler = self =
user: (cb) ->
UserGetter.getUser user_id, {first_name: 1, last_name: 1, email: 1, overleaf: 1}, cb
historyVersion: (cb) ->
ProjectHistoryHandler.ensureHistoryExistsForProject project_id, (error) ->
return callback(error) if error?
self._requestVersion project_id, cb
async.auto jobs, (err, results) ->

View file

@ -19,7 +19,6 @@ module.exports = ProjectHistoryHandler =
getHistoryId: (project_id, callback = (err, result) ->) ->
ProjectDetailsHandler.getDetails project_id, (err, project) ->
return callback(err) if err? # n.b. getDetails returns an error if the project doesn't exist
return callback(new Error("history exists")) if project.overleaf?.history?.id?
callback(null, project?.overleaf?.history?.id)
ensureHistoryExistsForProject: (project_id, callback = (err) ->) ->

View file

@ -15,6 +15,7 @@ describe 'ExportsHandler', ->
log: ->
err: ->
'../Project/ProjectGetter': @ProjectGetter = {}
'../Project/ProjectHistoryHandler': @ProjectHistoryHandler = {}
'../Project/ProjectLocator': @ProjectLocator = {}
'../Project/ProjectRootDocManager': @ProjectRootDocManager = {}
'../User/UserGetter': @UserGetter = {}
@ -101,6 +102,7 @@ describe 'ExportsHandler', ->
@rootDocPath = 'main.tex'
@historyVersion = 777
@ProjectGetter.getProject = sinon.stub().yields(null, @project)
@ProjectHistoryHandler.ensureHistoryExistsForProject = sinon.stub().yields(null)
@ProjectLocator.findRootDoc = sinon.stub().yields(null, [null, {fileSystem: 'main.tex'}])
@ProjectRootDocManager.ensureRootDocumentIsSet = sinon.stub().callsArgWith(1, null)
@UserGetter.getUser = sinon.stub().yields(null, @user)
@ -113,6 +115,10 @@ describe 'ExportsHandler', ->
@callback(error, export_data)
done()
it "should ensure the project has history", ->
@ProjectHistoryHandler.ensureHistoryExistsForProject.called
.should.equal true
it "should request the project history version", ->
@ExportsHandler._requestVersion.called
.should.equal true