<td>
<i class="glyphicon glyphicon-remove collection-tag-remove hide" style="cursor: pointer;"></i>
</td>
- <td class="collection-tag-field">
+ <td class="collection-tag-field collection-tag-field-key">
<%= k %>
</td>
- <td class="collection-tag-field">
+ <td class="collection-tag-field collection-tag-field-value">
<%= v %>
</td>
</tr>
<td>
<i class="glyphicon glyphicon-remove collection-tag-remove hide" style="cursor: pointer"></i>
</td>
- <td class="collection-tag-field"></td>
- <td class="collection-tag-field"></td>
+ <td class="collection-tag-field collection-tag-field-key"></td>
+ <td class="collection-tag-field collection-tag-field-value"></td>
</tr>
<div class="collection-tags-container" style="padding-left:2em;padding-right:2em;">
<% if object.editable? %>
<p title="Edit tags" id="edit-collection-tags">
- <button type="button" class="btn btn-primary edit-collection-tags">Edit</button>
+ <a type="button" class="btn btn-primary edit-collection-tags">Edit</a>
</p>
<% end %>
<div>
<% if object.editable? %>
<div class="pull-left">
- <button class="btn btn-primary btn-sm collection-tag-add hide"><i class="glyphicon glyphicon-plus"></i> Add new tag </button>
+ <a class="btn btn-primary btn-sm collection-tag-add hide"><i class="glyphicon glyphicon-plus"></i> Add new tag </a>
</div>
<div class="pull-right">
<%= link_to(save_tags_collection_path, {class: 'btn btn-sm btn-primary collection-tag-save hide', :remote => true, method: 'post', return_to: request.url}) do %>
first('.lock-collection-btn').click
accept_alert
end
+
+ test "collection tags tab" do
+ need_selenium
+
+ visit page_with_token('active', '/collections/zzzzz-4zz18-bv31uwvy3neko21')
+
+ click_link 'Tags'
+
+ # verify initial state
+ assert_selector 'a', text: 'Edit'
+ assert_no_selector 'a', text: 'Add new tag'
+ assert_no_selector 'a', text: 'Save'
+ assert_no_selector 'a', text: 'Cancel'
+
+ # Verify controls in edit mode
+ first('.edit-collection-tags').click
+ assert_selector 'a.disabled', text: 'Edit'
+ assert_selector 'a', text: 'Add new tag'
+ assert_selector 'a', text: 'Save'
+ assert_selector 'a', text: 'Cancel'
+
+ # add two tags
+ first('.edit-collection-tags').click
+
+ first('.glyphicon-plus').click
+ first('.collection-tag-field-key').click
+ first('.collection-tag-field-key').set('key 1')
+ first('.collection-tag-field-value').click
+ first('.collection-tag-field-value').set('value 1')
+
+ first('.glyphicon-plus').click
+ editable_key_fields = page.all('.collection-tag-field-key')
+ editable_key_fields[1].click
+ editable_key_fields[1].set('key 2')
+ editable_val_fields = page.all('.collection-tag-field-value')
+ editable_val_fields[1].click
+ editable_val_fields[1].set('value 2')
+
+ click_on 'Save'
+
+ # added tags; verify
+ assert_text 'key 1'
+ assert_text 'value 1'
+ assert_text 'key 2'
+ assert_text 'value 2'
+ assert_selector 'a', text: 'Edit'
+ assert_no_selector 'a', text: 'Save'
+
+ # remove first tag
+ first('.edit-collection-tags').click
+ assert_not_nil first('.glyphicon-remove')
+ first('.glyphicon-remove').click
+ click_on 'Save'
+
+ assert_text 'key 2'
+ assert_text 'value 2'
+ assert_no_text 'key 1'
+ assert_no_text 'value 1'
+ assert_selector 'a', text: 'Edit'
+
+ # Click on cancel and verify
+ first('.edit-collection-tags').click
+ first('.collection-tag-field-key').click
+ first('.collection-tag-field-key').set('this key wont stick')
+ first('.collection-tag-field-value').click
+ first('.collection-tag-field-value').set('this value wont stick')
+
+ click_on 'Cancel'
+
+ assert_text 'key 2'
+ assert_text 'value 2'
+ assert_no_text 'this key wont stick'
+ assert_no_text 'this value wont stick'
+
+ # remove all tags
+ first('.edit-collection-tags').click
+ first('.glyphicon-remove').click
+ click_on 'Save'
+ assert_selector 'a', text: 'Edit'
+ assert_no_text 'key 2'
+ assert_no_text 'value 2'
+ end
end