Przeglądaj źródła

Add acceptance test for project linked files

Shane Kilkelly 8 lat temu
rodzic
commit
e34131ed45

+ 1 - 0
services/web/docker-compose.yml

@@ -17,6 +17,7 @@ services:
       PROJECT_HISTORY_ENABLED: 'true'
       ENABLED_LINKED_FILE_TYPES: 'url'
       LINKED_URL_PROXY: 'http://localhost:6543'
+      ENABLED_LINKED_FILE_TYPES: 'url,project_file'
     depends_on:
       - redis
       - mongo

+ 79 - 4
services/web/test/acceptance/coffee/LinkedFilesTests.coffee

@@ -27,6 +27,81 @@ describe "LinkedFiles", ->
 			@owner.login ->
 				mkdirp Settings.path.dumpFolder, done
 
+	describe "creating a project linked file", ->
+		before (done) ->
+			@source_doc_name = 'test.txt'
+			async.series [
+				(cb) =>
+					@owner.createProject 'plf-test-one', {template: 'blank'}, (error, project_id) =>
+						@project_one_id = project_id
+						cb(error)
+				(cb) =>
+					@owner.getProject @project_one_id, (error, project) =>
+						@project_one = project
+						@project_one_root_folder_id = project.rootFolder[0]._id.toString()
+						cb(error)
+				(cb) =>
+					@owner.createProject 'plf-test-two', {template: 'blank'}, (error, project_id) =>
+						@project_two_id = project_id
+						cb(error)
+				(cb) =>
+					@owner.getProject @project_two_id, (error, project) =>
+						@project_two = project
+						@project_two_root_folder_id = project.rootFolder[0]._id.toString()
+						cb(error)
+				(cb) =>
+					@owner.createDocInProject @project_two_id,
+						@project_two_root_folder_id,
+						@source_doc_name,
+						(error, doc_id) =>
+							@source_doc_id = doc_id
+							cb(error)
+			], done
+
+		it 'should import a file from the source project', (done) ->
+			@owner.request.post {
+				url: "/project/#{@project_one_id}/linked_file",
+				json:
+					name: 'test-link.txt',
+					parent_folder_id: @project_one_root_folder_id,
+					provider: 'project_file',
+					data:
+						source_project_id: @project_two_id,
+						source_entity_path: "/#{@source_doc_name}",
+						source_project_display_name: "Project Two"
+			}, (error, response, body) =>
+				new_file_id = body.new_file_id
+				@existing_file_id = new_file_id
+				expect(new_file_id).to.exist
+				@owner.getProject @project_one_id, (error, project) =>
+					return done(error) if error?
+					firstFile = project.rootFolder[0].fileRefs[0]
+					expect(firstFile._id.toString()).to.equal(new_file_id.toString())
+					expect(firstFile.name).to.equal('test-link.txt')
+					done()
+
+		it 'should refresh the file', (done) ->
+			@owner.request.post {
+				url: "/project/#{@project_one_id}/linked_file",
+				json:
+					name: 'test-link.txt',
+					parent_folder_id: @project_one_root_folder_id,
+					provider: 'project_file',
+					data:
+						source_project_id: @project_two_id,
+						source_entity_path: "/#{@source_doc_name}",
+						source_project_display_name: "Project Two"
+			}, (error, response, body) =>
+				new_file_id = body.new_file_id
+				expect(new_file_id).to.exist
+				expect(new_file_id).to.not.equal @existing_file_id
+				@owner.getProject @project_one_id, (error, project) =>
+					return done(error) if error?
+					firstFile = project.rootFolder[0].fileRefs[0]
+					expect(firstFile._id.toString()).to.equal(new_file_id.toString())
+					expect(firstFile.name).to.equal('test-link.txt')
+					done()
+
 	describe "creating a URL based linked file", ->
 		before (done) ->
 			@owner.createProject "url-linked-files-project", {template: "blank"}, (error, project_id) =>
@@ -50,7 +125,7 @@ describe "LinkedFiles", ->
 					name: 'url-test-file-1'
 			}, (error, response, body) =>
 				throw error if error?
-				expect(response.statusCode).to.equal 204
+				expect(response.statusCode).to.equal 200
 				@owner.getProject @project_id, (error, project) =>
 					throw error if error?
 					file = project.rootFolder[0].fileRefs[0]
@@ -76,7 +151,7 @@ describe "LinkedFiles", ->
 					name: 'url-test-file-2'
 			}, (error, response, body) =>
 				throw error if error?
-				expect(response.statusCode).to.equal 204
+				expect(response.statusCode).to.equal 200
 				@owner.request.post {
 					url: "/project/#{@project_id}/linked_file",
 					json:
@@ -88,7 +163,7 @@ describe "LinkedFiles", ->
 						name: 'url-test-file-2'
 				}, (error, response, body) =>
 					throw error if error?
-					expect(response.statusCode).to.equal 204
+					expect(response.statusCode).to.equal 200
 					@owner.getProject @project_id, (error, project) =>
 						throw error if error?
 						file = project.rootFolder[0].fileRefs[1]
@@ -168,7 +243,7 @@ describe "LinkedFiles", ->
 					name: 'url-test-file-6'
 			}, (error, response, body) =>
 				throw error if error?
-				expect(response.statusCode).to.equal 204
+				expect(response.statusCode).to.equal 200
 				@owner.getProject @project_id, (error, project) =>
 					throw error if error?
 					file = _.find project.rootFolder[0].fileRefs, (file) ->

+ 12 - 0
services/web/test/acceptance/coffee/helpers/User.coffee

@@ -137,6 +137,18 @@ class User
 				return callback(err)
 			callback(null)
 
+	createDocInProject: (project_id, parent_folder_id, name, callback=(error, doc_id)->) ->
+		@getCsrfToken (error) =>
+			return callback(error) if error?
+			@request.post {
+				url: "/project/#{project_id}/doc",
+				json: {
+					name: name,
+					parent_folder_id: parent_folder_id
+				}
+			}, (error, response, body) =>
+				callback(null, body._id)
+
 	addUserToProject: (project_id, user, privileges, callback = (error, user) ->) ->
 		if privileges == 'readAndWrite'
 			updateOp = {$addToSet: {collaberator_refs: user._id.toString()}}