diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index b30c2b8f91..d89a014e2b 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -229,7 +229,6 @@ module.exports = ProjectController = title: project.name priority_title: true bodyClasses: ["editor"] - project : project project_id : project._id user : { id : user.id diff --git a/services/web/app/coffee/Features/References/ReferencesHandler.coffee b/services/web/app/coffee/Features/References/ReferencesHandler.coffee index 0b2ddb1e26..1113a2f8a6 100644 --- a/services/web/app/coffee/Features/References/ReferencesHandler.coffee +++ b/services/web/app/coffee/Features/References/ReferencesHandler.coffee @@ -2,6 +2,7 @@ logger = require("logger-sharelatex") request = require("request") settings = require("settings-sharelatex") Project = require("../../models/Project").Project +User = require("../../models/User").User DocumentUpdaterHandler = require('../DocumentUpdater/DocumentUpdaterHandler') U = require('underscore') Async = require('async') @@ -31,11 +32,12 @@ module.exports = ReferencesHandler = return ids _isFullIndex: (project, callback = (err, result) ->) -> - owner = project.owner_ref - callback(null, owner.features.references == true) + User.find { _id: project.owner_ref }, { features: true }, (err, owner) -> + return callback(err) if err? + callback(null, owner?.features?.references == true) indexAll: (projectId, callback=(err, data)->) -> - Project.findPopulatedById projectId, (err, project) -> + Project.find { _id: projectId }, (err, project) -> if err logger.err {err, projectId}, "error finding project" return callback(err) @@ -44,7 +46,7 @@ module.exports = ReferencesHandler = ReferencesHandler._doIndexOperation(projectId, project, docIds, callback) index: (projectId, docIds, callback=(err, data)->) -> - Project.findPopulatedById projectId, (err, project) -> + Project.find { _id: projectId }, (err, project) -> if err logger.err {err, projectId}, "error finding project" return callback(err) diff --git a/services/web/test/UnitTests/coffee/References/ReferencesHandlerTests.coffee b/services/web/test/UnitTests/coffee/References/ReferencesHandlerTests.coffee index 86cf9111dc..3eacae73cd 100644 --- a/services/web/test/UnitTests/coffee/References/ReferencesHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/References/ReferencesHandlerTests.coffee @@ -41,9 +41,12 @@ describe 'ReferencesHandler', -> } '../../models/Project': { Project: @Project = { - findPopulatedById: sinon.stub().callsArgWith(1, null, @fakeProject) + find: sinon.stub().callsArgWith(1, null, @fakeProject) } } + '../../models/User': { + User: @User = {} + } '../DocumentUpdater/DocumentUpdaterHandler': @DocumentUpdaterHandler = { flushDocToMongo: sinon.stub().callsArgWith(2, null) } @@ -70,10 +73,10 @@ describe 'ReferencesHandler', -> @handler._findBibDocIds.callCount.should.equal 0 done() - it 'should call Project.findPopulatedById', (done) -> + it 'should call Project.find', (done) -> @call (err, data) => - @Project.findPopulatedById.callCount.should.equal 1 - @Project.findPopulatedById.calledWith(@projectId).should.equal true + @Project.find.callCount.should.equal 1 + @Project.find.calledWith(_id: @projectId).should.equal true done() it 'should not call _findBibDocIds', (done) -> @@ -109,10 +112,10 @@ describe 'ReferencesHandler', -> expect(data).to.equal @fakeResponseData done() - describe 'when Project.findPopulatedById produces an error', -> + describe 'when Project.find produces an error', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, new Error('woops')) + @Project.find.callsArgWith(1, new Error('woops')) it 'should produce an error', (done) -> @call (err, data) => @@ -129,7 +132,7 @@ describe 'ReferencesHandler', -> describe 'when _isFullIndex produces an error', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, null, @fakeProject) + @Project.find.callsArgWith(1, null, @fakeProject) @handler._isFullIndex.callsArgWith(1, new Error('woops')) it 'should produce an error', (done) -> @@ -147,7 +150,7 @@ describe 'ReferencesHandler', -> describe 'when flushDocToMongo produces an error', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, null, @fakeProject) + @Project.find.callsArgWith(1, null, @fakeProject) @handler._isFullIndex.callsArgWith(1, false) @DocumentUpdaterHandler.flushDocToMongo.callsArgWith(2, new Error('woops')) @@ -167,7 +170,7 @@ describe 'ReferencesHandler', -> describe 'when request produces an error', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, null, @fakeProject) + @Project.find.callsArgWith(1, null, @fakeProject) @handler._isFullIndex.callsArgWith(1, null, false) @DocumentUpdaterHandler.flushDocToMongo.callsArgWith(2, null) @request.post.callsArgWith(1, new Error('woops')) @@ -182,7 +185,7 @@ describe 'ReferencesHandler', -> describe 'when request responds with error status', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, null, @fakeProject) + @Project.find.callsArgWith(1, null, @fakeProject) @handler._isFullIndex.callsArgWith(1, null, false) @request.post.callsArgWith(1, null, {statusCode: 500}, null) @@ -234,10 +237,10 @@ describe 'ReferencesHandler', -> expect(data).to.equal @fakeResponseData done() - describe 'when Project.findPopulatedById produces an error', -> + describe 'when Project.find produces an error', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, new Error('woops')) + @Project.find.callsArgWith(1, new Error('woops')) it 'should produce an error', (done) -> @call (err, data) => @@ -254,7 +257,7 @@ describe 'ReferencesHandler', -> describe 'when _isFullIndex produces an error', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, null, @fakeProject) + @Project.find.callsArgWith(1, null, @fakeProject) @handler._isFullIndex.callsArgWith(1, new Error('woops')) it 'should produce an error', (done) -> @@ -272,7 +275,7 @@ describe 'ReferencesHandler', -> describe 'when flushDocToMongo produces an error', -> beforeEach -> - @Project.findPopulatedById.callsArgWith(1, null, @fakeProject) + @Project.find.callsArgWith(1, null, @fakeProject) @handler._isFullIndex.callsArgWith(1, false) @DocumentUpdaterHandler.flushDocToMongo.callsArgWith(2, new Error('woops')) @@ -312,16 +315,19 @@ describe 'ReferencesHandler', -> beforeEach -> @fakeProject = - owner_ref: - features: - references: false + owner_ref: @owner_ref = "owner-ref-123" + @owner = + features: + references: false + @User.find = sinon.stub() + @User.find.withArgs({_id: @owner_ref}, {features: true}).yields(null, @owner) @call = (callback) => @handler._isFullIndex @fakeProject, callback describe 'with references feature on', -> beforeEach -> - @fakeProject.owner_ref.features.references = true + @owner.features.references = true it 'should return true', -> @call (err, isFullIndex) => @@ -331,7 +337,7 @@ describe 'ReferencesHandler', -> describe 'with references feature off', -> beforeEach -> - @fakeProject.owner_ref.features.references = false + @owner.features.references = false it 'should return false', -> @call (err, isFullIndex) =>