From fff6873e1072c4bfd0d3cb0afa5642ed96d6ae6b Mon Sep 17 00:00:00 2001 From: Alasdair Smith Date: Thu, 2 Nov 2017 10:18:01 +0000 Subject: [PATCH] Add tests for getting V1 projects --- .../Project/ProjectControllerTests.coffee | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee b/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee index 498090f790..7cd43f0174 100644 --- a/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee +++ b/services/web/test/UnitTests/coffee/Project/ProjectControllerTests.coffee @@ -54,6 +54,8 @@ 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) @@ -89,6 +91,7 @@ describe "ProjectController", -> "./ProjectUpdateHandler":@ProjectUpdateHandler "../ReferencesSearch/ReferencesSearchHandler": @ReferencesSearchHandler "./ProjectGetter": @ProjectGetter + './V1ProjectGetter': @V1ProjectGetter '../Authentication/AuthenticationController': @AuthenticationController "../Analytics/AnalyticsManager": @AnalyticsManager "../TokenAccess/TokenAccessHandler": @TokenAccessHandler @@ -263,6 +266,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 it "should render the project/list page", (done)-> @res.render = (pageName, opts)=> @@ -278,7 +282,7 @@ describe "ProjectController", -> it "should send the projects", (done)-> @res.render = (pageName, opts)=> - opts.projects.length.should.equal (@projects.length + @collabertions.length + @readOnly.length + @tokenReadAndWrite.length + @tokenReadOnly.length) + opts.projects.length.should.equal (@projects.length + @collabertions.length + @readOnly.length) done() @ProjectController.projectListPage @req, @res @@ -295,6 +299,36 @@ describe "ProjectController", -> done() @ProjectController.projectListPage @req, @res + describe 'with overleaf-integration-web-module', -> + beforeEach -> + @V1Response = + projects: [ + { id: '123mockV1Id', title: 'mock title', updated_at: 1509616411, removed: false, archived: false } + { id: '456mockV1Id', title: 'mock title 2', updated_at: 1509616411, removed: true, archived: false } + ], + tags: [ + { name: 'mock tag', project_ids: ['123mockV1Id'] } + ] + @V1ProjectGetter.findAllUsersProjects.callsArgWith(1, null, @V1Response) + + it 'should include V1 projects', (done) -> + @res.render = (pageName, opts) => + opts.projects.length.should.equal (@projects.length + @collabertions.length + @readOnly.length + @V1Response.projects.length) + done() + @ProjectController.projectListPage @req, @res + + it 'should include V1 tags', (done) -> + @res.render = (pageName, opts) => + opts.tags.length.should.equal (@tags.length + @V1Response.tags.length) + done() + @ProjectController.projectListPage @req, @res + + it 'should have isShowingV1Projects flag', (done) -> + @res.render = (pageName, opts) => + opts.isShowingV1Projects.should.equal true + done() + @ProjectController.projectListPage @req, @res + describe "projectListPage with duplicate projects", -> beforeEach ->