Diff
Modified: branches/datasets/test/fixtures/content_blobs.yml (2881 => 2882)
--- branches/datasets/test/fixtures/content_blobs.yml 2011-12-14 14:13:09 UTC (rev 2881)
+++ branches/datasets/test/fixtures/content_blobs.yml 2011-12-14 16:08:28 UTC (rev 2882)
@@ -30,3 +30,5 @@
string_concat_v2:
data: <%= load_blob_data('string_concat_v2.t2flow') %>
+picture_file_data:
+ data: <%= load_blob_data('file_picture.png') %>
Modified: branches/datasets/test/fixtures/contributions.yml (2881 => 2882)
--- branches/datasets/test/fixtures/contributions.yml 2011-12-14 14:13:09 UTC (rev 2881)
+++ branches/datasets/test/fixtures/contributions.yml 2011-12-14 16:08:28 UTC (rev 2882)
@@ -141,4 +141,10 @@
contributor_id: 1 # John
contributor_type: User
contributable: string_concat_v2_empty (DataSet)
+ policy: only_john_can_edit
+
+contribution_data_set_string_concat_v2_files:
+ contributor_id: 1 # John
+ contributor_type: User
+ contributable: string_concat_v2_files (DataSet)
policy: only_john_can_edit
\ No newline at end of file
Modified: branches/datasets/test/fixtures/data_items.yml (2881 => 2882)
--- branches/datasets/test/fixtures/data_items.yml 2011-12-14 14:13:09 UTC (rev 2881)
+++ branches/datasets/test/fixtures/data_items.yml 2011-12-14 16:08:28 UTC (rev 2882)
@@ -17,3 +17,9 @@
port_name: result
port_type: output
data_set: string_concat_v1_example
+
+string_concat_v2_files_file_data:
+ data: picture_file_data (FileData)
+ port_name: string1
+ port_type: input
+ data_set: string_concat_v2_files
Modified: branches/datasets/test/fixtures/data_sets.yml (2881 => 2882)
--- branches/datasets/test/fixtures/data_sets.yml 2011-12-14 14:13:09 UTC (rev 2881)
+++ branches/datasets/test/fixtures/data_sets.yml 2011-12-14 16:08:28 UTC (rev 2882)
@@ -20,4 +20,12 @@
workflow_version: 2
category: example_data
contributor_id: 1 # John
+ contributor_type: User
+
+string_concat_v2_files:
+ title: Data Set with Files
+ workflow: string_concat
+ workflow_version: 2
+ category: example_data
+ contributor_id: 1 # John
contributor_type: User
\ No newline at end of file
Added: branches/datasets/test/fixtures/file_data.yml (0 => 2882)
--- branches/datasets/test/fixtures/file_data.yml (rev 0)
+++ branches/datasets/test/fixtures/file_data.yml 2011-12-14 16:08:28 UTC (rev 2882)
@@ -0,0 +1,4 @@
+picture_file_data:
+ file_name: picture.png
+ content_type_id: 1 # PNG
+ content_blob: picture_file_data
Modified: branches/datasets/test/functional/data_items_controller_test.rb (2881 => 2882)
--- branches/datasets/test/functional/data_items_controller_test.rb 2011-12-14 14:13:09 UTC (rev 2881)
+++ branches/datasets/test/functional/data_items_controller_test.rb 2011-12-14 16:08:28 UTC (rev 2882)
@@ -26,7 +26,7 @@
assert_equal "test", assigns(:data_item).data.data
end
- test "can add file data to a data set" do
+ test "can add myexperiment file to a data set" do
data_set = data_sets(:string_concat_v1_empty)
login_as(:john)
@@ -43,7 +43,48 @@
assert_equal blobs(:picture), assigns(:data_item).data
end
+ test "can upload a new file to a data set" do
+ data_set = data_sets(:string_concat_v1_empty)
+ login_as(:john)
+
+ assert_no_difference("ContentType.count") do
+ assert_difference("ContentBlob.count", 1) do
+ assert_difference("FileData.count", 1) do
+ assert_difference("DataItem.count", 1) do
+ post :create, :data_set_id => data_set.id,
+ :workflow_port => "string1",
+ :port_type => "input",
+ :data_type => "FileData",
+ :file_data => fixture_file_upload('files/picture_1.png', 'image/png')
+ end
+ end
+ end
+ end
+
+ assert_response :redirect
+ end
+
+ test "file data not saved if data item not saved" do
+ data_set = data_sets(:string_concat_v1_empty)
+
+ login_as(:john)
+
+ assert_no_difference("ContentBlob.count") do
+ assert_no_difference("FileData.count") do
+ assert_no_difference("DataItem.count") do
+ post :create, :data_set_id => data_set.id,
+ :workflow_port => "string1",
+ :port_type => "invalid_port_type_that_will_cause_failure",
+ :data_type => "FileData",
+ :file_data => fixture_file_upload('files/picture_1.png', 'image/png')
+ end
+ end
+ end
+
+ assert_response :unprocessable_entity
+ end
+
test "text data not saved if data item not saved" do
data_set = data_sets(:string_concat_v1_empty)
@@ -118,6 +159,30 @@
assert_equal blobs(:picture), assigns(:data_item).data
end
+ test "can replace file data in a data set without leftovers" do
+ data_item = data_items(:string_concat_v2_files_file_data)
+
+ login_as(:john)
+
+ assert_difference("ContentBlob.count", -1) do
+ assert_difference("FileData.count", -1) do
+ assert_difference("TextData.count", 1) do
+ assert_no_difference("DataItem.count") do
+ xhr :put, :update,
+ :id => data_item.id,
+ :workflow_port => "string1",
+ :port_type => "input",
+ :data_type => "TextData",
+ :data ="" "new data!"
+ end
+ end
+ end
+ end
+
+ assert_response :success
+ assert_equal "new data!", assigns(:data_item).data.data
+ end
+
test "can delete data in a data set" do
data_item = data_items(:string_concat_v1_example_text_data2)
Modified: branches/datasets/test/test_helper.rb (2881 => 2882)
--- branches/datasets/test/test_helper.rb 2011-12-14 14:13:09 UTC (rev 2881)
+++ branches/datasets/test/test_helper.rb 2011-12-14 16:08:28 UTC (rev 2882)
@@ -36,6 +36,7 @@
# So the workflow_versions fixtures are created like Rails models rather than just DB records
set_fixture_class :workflow_versions=> Workflow::Version
+ set_fixture_class :file_data => FileData
# Add more helper methods to be used by all tests here...