Browse Source

Add tests for getting V1 projects

Alasdair Smith 9 years ago
parent
commit
fff6873e10

+ 35 - 1
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 ->