X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c33eb3191d36b7e39023db0c0f1790a1bad2c4f0..ef4ca87900bd023849aca62952ad2a27cfe40d34:/apps/workbench/test/controllers/collections_controller_test.rb diff --git a/apps/workbench/test/controllers/collections_controller_test.rb b/apps/workbench/test/controllers/collections_controller_test.rb index 559e24ad02..ce6adbcf32 100644 --- a/apps/workbench/test/controllers/collections_controller_test.rb +++ b/apps/workbench/test/controllers/collections_controller_test.rb @@ -506,7 +506,7 @@ class CollectionsControllerTest < ActionController::TestCase collection = api_fixture('collections')['foo_file'] get :show, {id: collection['uuid']}, session_for(:active) assert_includes @response.body, collection['name'] - assert_match /href="#{collection['uuid']}\/foo" ><\/i> foo 'dir1/dir1imagefilerenamed.png' + }, + format: :json + }, session_for(:active) + assert_response :success + + collection = Collection.select([:uuid, :manifest_text]).where(uuid: collection['uuid']).first + assert_match /. d41d8cd98f00b204e9800998ecf8427e\+0\+A(.*) 0:0:file1renamed\n.\/dir1 d41d8cd98f00b204e9800998ecf8427e\+0\+A(.*) 0:0:dir1file2 0:0:dir1imagefilerenamed.png 0:0:file2\n.\/dir2\/dir3 d41d8cd98f00b204e9800998ecf8427e\+0\+A(.*) 0:0:dir1file1moved\n$/, collection['manifest_text'] + end + + test "renaming file with a duplicate name in same stream not allowed" do + use_token :active + + # rename 'file2' as 'file1' and expect error + post :update, { + id: 'zzzzz-4zz18-pyw8yp9g3pr7irn', + collection: { + 'rename-file-path:file2' => 'file1' + }, + format: :json + }, session_for(:active) + assert_response 422 + assert_includes json_response['errors'], 'Duplicate file path' + end + + test "renaming file with a duplicate name as another stream not allowed" do + use_token :active + + # rename 'file1' as 'dir1/file1' and expect error + post :update, { + id: 'zzzzz-4zz18-pyw8yp9g3pr7irn', + collection: { + 'rename-file-path:file1' => 'dir1/file1' + }, + format: :json + }, session_for(:active) + assert_response 422 + assert_includes json_response['errors'], 'Duplicate file path' + end + + [ + [:active, true], + [:spectator, false], + ].each do |user, editable| + test "tags tab #{editable ? 'shows' : 'does not show'} edit button to #{user}" do + use_token user + + get :tags, { + id: api_fixture('collections')['collection_with_tags_owned_by_active']['uuid'], + format: :js, + }, session_for(user) + + assert_response :success + + found = 0 + response.body.scan /]+>/ do |remove_icon| + remove_icon.scan(/\ collection-tag-remove(.*?)\"/).each do |i,| + found += 1 + end + end + + if editable + assert_equal(3, found) # two from the tags + 1 from the hidden "add tag" row + else + assert_equal(0, found) + end + end + end + + test "save_tags and verify that 'other' properties are retained" do + use_token :active + + collection = api_fixture('collections')['collection_with_tags_owned_by_active'] + + new_tags = {"new_tag1" => "new_tag1_value", + "new_tag2" => "new_tag2_value"} + + post :save_tags, { + id: collection['uuid'], + tag_data: new_tags, + format: :js, + }, session_for(:active) + + assert_response :success + assert_equal true, response.body.include?("new_tag1") + assert_equal true, response.body.include?("new_tag1_value") + assert_equal true, response.body.include?("new_tag2") + assert_equal true, response.body.include?("new_tag2_value") + assert_equal false, response.body.include?("existing tag 1") + assert_equal false, response.body.include?("value for existing tag 1") + + updated_tags = Collection.find(collection['uuid']).properties + assert_equal true, updated_tags.keys.include?(:'new_tag1') + assert_equal new_tags['new_tag1'], updated_tags[:'new_tag1'] + assert_equal true, updated_tags.keys.include?(:'new_tag2') + assert_equal new_tags['new_tag2'], updated_tags[:'new_tag2'] + assert_equal false, updated_tags.keys.include?(:'existing tag 1') + assert_equal false, updated_tags.keys.include?(:'existing tag 2') end end