diff --git a/services/web/app/coffee/Features/Exports/ExportsHandler.coffee b/services/web/app/coffee/Features/Exports/ExportsHandler.coffee index 75bd3ce270..523e5d5cfe 100644 --- a/services/web/app/coffee/Features/Exports/ExportsHandler.coffee +++ b/services/web/app/coffee/Features/Exports/ExportsHandler.coffee @@ -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,7 +36,9 @@ module.exports = ExportsHandler = self = user: (cb) -> UserGetter.getUser user_id, {first_name: 1, last_name: 1, email: 1, overleaf: 1}, cb historyVersion: (cb) -> - self._requestVersion project_id, cb + ProjectHistoryHandler.ensureHistoryExistsForProject project_id, (error) -> + return callback(error) if error? + self._requestVersion project_id, cb async.auto jobs, (err, results) -> if err? diff --git a/services/web/app/coffee/Features/Project/ProjectHistoryHandler.coffee b/services/web/app/coffee/Features/Project/ProjectHistoryHandler.coffee index 2b59fe1d5f..f2e38d5a41 100644 --- a/services/web/app/coffee/Features/Project/ProjectHistoryHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectHistoryHandler.coffee @@ -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) ->) -> diff --git a/services/web/test/unit/coffee/Exports/ExportsHandlerTests.coffee b/services/web/test/unit/coffee/Exports/ExportsHandlerTests.coffee index 4952198c3b..da63882c4a 100644 --- a/services/web/test/unit/coffee/Exports/ExportsHandlerTests.coffee +++ b/services/web/test/unit/coffee/Exports/ExportsHandlerTests.coffee @@ -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