<%
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 %>
</td>
</tr>
<% end %>
- <% end %>
+ <% end %>
+ <% if @object.editable? %>
<!-- A hidden row to add new tag -->
<tr class="collection-tag-hidden hide">
<td>
<td class="collection-tag-field collection-tag-field-key"></td>
<td class="collection-tag-field collection-tag-field-value"></td>
</tr>
+ <% end %>
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
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
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: {}