9426: test collection tags update for a collection with other properties
authorradhika <radhika@curoverse.com>
Wed, 21 Jun 2017 15:47:38 +0000 (11:47 -0400)
committerradhika <radhika@curoverse.com>
Wed, 21 Jun 2017 15:47:38 +0000 (11:47 -0400)
Arvados-DCO-1.1-Signed-off-by: Radhika Chippada <radhika@curoverse.com>

apps/workbench/app/views/collections/_show_tag_rows.html.erb
apps/workbench/test/controllers/collections_controller_test.rb
services/api/test/fixtures/collections.yml
services/api/test/fixtures/links.yml

index 8d2ae7b360400f8706c573baa04efb34228dbb54..eceec1057beb05d55c8088fab6b694b4170feea0 100644 (file)
@@ -1,11 +1,13 @@
 <%
   tags = object.properties[:tags]
 %>
-        <% if tags.andand.is_a?(Hash) %>
+      <% if tags.andand.is_a?(Hash) %>
         <% tags.each do |k, v| %>
           <tr class="collection-tag-<%=k%>">
             <td>
-              <i class="glyphicon glyphicon-remove collection-tag-remove hide" style="cursor: pointer;"></i>
+              <% if object.editable? %>
+                <i class="glyphicon glyphicon-remove collection-tag-remove hide" style="cursor: pointer;"></i>
+              <% end %>
             </td>
             <td class="collection-tag-field collection-tag-field-key">
               <%= k %>
@@ -15,8 +17,9 @@
             </td>
           </tr>
         <% end %>
-        <% end %>
+      <% end %>
 
+      <% if @object.editable? %>
         <!-- A hidden row to add new tag -->
         <tr class="collection-tag-hidden hide">
           <td>
@@ -25,3 +28,4 @@
           <td class="collection-tag-field collection-tag-field-key"></td>
           <td class="collection-tag-field collection-tag-field-value"></td>
         </tr>
+      <% end %>
index 1632dd0653b11d82d9a97e245bc9dd55db5ccc1d..257f82968ee435b77df5e232e7edf68d25b78cb7 100644 (file)
@@ -762,4 +762,60 @@ class CollectionsControllerTest < ActionController::TestCase
     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 /<i[^>]+>/ 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_properties = Collection.find(collection['uuid']).properties
+    assert_equal new_tags, updated_properties[:tags]
+    assert_equal true, updated_properties.keys.include?(:'some other property')
+    assert_equal 'value for the other property', updated_properties[:'some other property']
+  end
 end
index 8aedbdc7057bc1d74d0749477a6a9c3c62b9624b..6543f5422a861b3430c285402a5ae1d8ac1d3dd4 100644 (file)
@@ -657,6 +657,23 @@ collection_to_remove_and_rename_files:
   manifest_text: ". d41d8cd98f00b204e9800998ecf8427e+0 0:0:file1 0:0:file2\n"
   name: collection to remove and rename files
 
+collection_with_tags_owned_by_active:
+  uuid: zzzzz-4zz18-taggedcolletion
+  portable_data_hash: fa7aeb5140e2848d39b416daeef4ffc5+45
+  owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+  created_at: 2014-02-03T17:22:54Z
+  modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+  modified_by_user_uuid: zzzzz-tpzed-d9tiejq69daie8f
+  modified_at: 2014-02-03T17:22:54Z
+  updated_at: 2014-02-03T17:22:54Z
+  manifest_text: ". 37b51d194a7513e45b56f6524f2d51f2+3 0:3:bar\n"
+  name: collection with tags
+  properties:
+    tags:
+      existing tag 1: value for existing tag 1
+      existing tag 2: value for existing tag 2
+    some other property: value for the other property
+
 
 # Test Helper trims the rest of the file
 
index ac579f7a97580a15d9815d46c8f8cdebd6ea820a..2c654836096cc1d0257650159a0a8e0bfc58825f 100644 (file)
@@ -1056,3 +1056,17 @@ star_shared_project_for_project_viewer:
   name: zzzzz-j7d0g-starredshared01
   head_uuid: zzzzz-j7d0g-starredshared01
   properties: {}
+
+tagged_collection_readable_by_spectator:
+  uuid: zzzzz-o0j2j-readacl4tagcoll
+  owner_uuid: zzzzz-tpzed-000000000000000
+  created_at: 2014-01-24 20:42:26 -0800
+  modified_by_client_uuid: zzzzz-ozdt8-brczlopd8u8d0jr
+  modified_by_user_uuid: zzzzz-tpzed-000000000000000
+  modified_at: 2014-01-24 20:42:26 -0800
+  updated_at: 2014-01-24 20:42:26 -0800
+  tail_uuid: zzzzz-tpzed-l1s2piq4t4mps8r
+  link_class: permission
+  name: can_read
+  head_uuid: zzzzz-4zz18-taggedcolletion
+  properties: {}