From 621977c47c7fc860a263cb17e9c19bf178b42c6b Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Wed, 15 Nov 2017 15:54:47 +0000 Subject: [PATCH] Replace call to V1ProjectGetter with Module hook --- .../Features/Project/ProjectController.coffee | 5 +++-- .../coffee/Project/ProjectControllerTests.coffee | 15 ++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectController.coffee b/services/web/app/coffee/Features/Project/ProjectController.coffee index 877a0ae634..be3236747a 100644 --- a/services/web/app/coffee/Features/Project/ProjectController.coffee +++ b/services/web/app/coffee/Features/Project/ProjectController.coffee @@ -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) -> diff --git a/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee b/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee index 2111abc085..4236ffa37f 100644 --- a/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee @@ -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)=>