Replace call to V1ProjectGetter with Module hook

This commit is contained in:
Alasdair Smith
2017-11-15 15:54:47 +00:00
parent 3eaf6c5d8e
commit 621977c47c
2 changed files with 11 additions and 9 deletions

View File

@@ -17,7 +17,6 @@ fs = require "fs"
InactiveProjectManager = require("../InactiveData/InactiveProjectManager")
ProjectUpdateHandler = require("./ProjectUpdateHandler")
ProjectGetter = require("./ProjectGetter")
V1ProjectGetter = require("./V1ProjectGetter")
PrivilegeLevels = require("../Authorization/PrivilegeLevels")
AuthenticationController = require("../Authentication/AuthenticationController")
PackageVersions = require("../../infrastructure/PackageVersions")
@@ -25,6 +24,7 @@ AnalyticsManager = require "../Analytics/AnalyticsManager"
Sources = require "../Authorization/Sources"
TokenAccessHandler = require '../TokenAccess/TokenAccessHandler'
CollaboratorsHandler = require '../Collaborators/CollaboratorsHandler'
Modules = require '../../infrastructure/Modules'
crypto = require 'crypto'
module.exports = ProjectController =
@@ -150,7 +150,8 @@ module.exports = ProjectController =
projects: (cb)->
ProjectGetter.findAllUsersProjects user_id, 'name lastUpdated publicAccesLevel archived owner_ref tokens', cb
v1Projects: (cb) ->
V1ProjectGetter.findAllUsersProjects user_id, cb
Modules.hooks.fire "findAllUsersProjects", user_id, (error, projects = []) ->
cb error, projects[0] # hooks.fire returns an array of results, only need first
hasSubscription: (cb)->
LimitationsManager.userHasSubscriptionOrIsGroupMember currentUser, cb
user: (cb) ->

View File

@@ -54,8 +54,6 @@ describe "ProjectController", ->
@ProjectGetter =
findAllUsersProjects: sinon.stub()
getProject: sinon.stub()
@V1ProjectGetter =
findAllUsersProjects: sinon.stub()
@AuthenticationController =
getLoggedInUser: sinon.stub().callsArgWith(1, null, @user)
getLoggedInUserId: sinon.stub().returns(@user._id)
@@ -68,6 +66,9 @@ describe "ProjectController", ->
protectTokens: sinon.stub()
@CollaboratorsHandler =
userIsTokenMember: sinon.stub().callsArgWith(2, null, false)
@Modules =
hooks:
fire: sinon.stub()
@ProjectController = SandboxedModule.require modulePath, requires:
"settings-sharelatex":@settings
"logger-sharelatex":
@@ -91,11 +92,11 @@ describe "ProjectController", ->
"./ProjectUpdateHandler":@ProjectUpdateHandler
"../ReferencesSearch/ReferencesSearchHandler": @ReferencesSearchHandler
"./ProjectGetter": @ProjectGetter
'./V1ProjectGetter': @V1ProjectGetter
'../Authentication/AuthenticationController': @AuthenticationController
"../Analytics/AnalyticsManager": @AnalyticsManager
"../TokenAccess/TokenAccessHandler": @TokenAccessHandler
"../Collaborators/CollaboratorsHandler": @CollaboratorsHandler
"../../infrastructure/Modules": @Modules
@projectName = "£12321jkj9ujkljds"
@req =
@@ -266,7 +267,7 @@ describe "ProjectController", ->
@TagsHandler.getAllTags.callsArgWith(1, null, @tags, {})
@NotificationsHandler.getUserNotifications = sinon.stub().callsArgWith(1, null, @notifications, {})
@ProjectGetter.findAllUsersProjects.callsArgWith(2, null, @allProjects)
@V1ProjectGetter.findAllUsersProjects.callsArg(1) # Without integration module cb returns without args
@Modules.hooks.fire.yields(undefined) # Without integration module hook, cb returns undefined
it "should render the project/list page", (done)->
@res.render = (pageName, opts)=>
@@ -299,7 +300,7 @@ describe "ProjectController", ->
done()
@ProjectController.projectListPage @req, @res
describe 'with overleaf-integration-web-module', ->
describe 'with overleaf-integration-web-module hook', ->
beforeEach ->
@V1Response =
projects: [
@@ -309,7 +310,7 @@ describe "ProjectController", ->
tags: [
{ name: 'mock tag', project_ids: ['123mockV1Id'] }
]
@V1ProjectGetter.findAllUsersProjects.callsArgWith(1, null, @V1Response)
@Modules.hooks.fire.withArgs('findAllUsersProjects', @user._id).yields(null, [@V1Response]) # Need to wrap response in array, as multiple hooks could fire
it 'should include V1 projects', (done) ->
@res.render = (pageName, opts) =>
@@ -389,7 +390,7 @@ describe "ProjectController", ->
@TagsHandler.getAllTags.callsArgWith(1, null, @tags, {})
@NotificationsHandler.getUserNotifications = sinon.stub().callsArgWith(1, null, @notifications, {})
@ProjectGetter.findAllUsersProjects.callsArgWith(2, null, @allProjects)
@V1ProjectGetter.findAllUsersProjects.callsArg(1) # Without integration module cb returns without args
@Modules.hooks.fire.withArgs('findAllUsersProjects', @user._id).yields(undefined) # Without integration module hook, cb returns undefined
it "should render the project/list page", (done)->
@res.render = (pageName, opts)=>