+ ["button","selection"].each do |method|
+ test "trashed projects using #{method}" do
+ deleted = api_fixture('groups')['trashed_project']
+ aproject = api_fixture('groups')['aproject']
+
+ # verify that the un-trashed item are missing in /groups page
+ visit page_with_token('active', "/projects/zzzzz-tpzed-xurymjxw79nv3jz")
+ click_on "Subprojects"
+ assert_no_text deleted['name']
+
+ # visit trash page
+ visit page_with_token('active', "/trash")
+ click_on "Trashed projects"
+
+ assert_text deleted['name']
+ assert_text deleted['uuid']
+ assert_no_text aproject['name']
+ assert_no_text aproject['uuid']
+
+ # Un-trash item
+ if method == "button"
+ within('tr', text: deleted['uuid']) do
+ first('.fa-recycle').click
+ end
+ assert_text "The group with UUID #{deleted['uuid']} is in the trash"
+ click_on "Click here to untrash '#{deleted['name']}'"
+ else
+ within('tr', text: deleted['uuid']) do
+ first('input').click
+ end
+ click_button 'Selection...'
+ within('.selection-action-container') do
+ click_link 'Un-trash selected items'
+ end
+ wait_for_ajax
+ assert_no_text deleted['uuid']
+ end
+
+ # check that the un-trashed item are now shown on parent project page
+ visit page_with_token('active', "/projects/zzzzz-tpzed-xurymjxw79nv3jz")
+ click_on "Subprojects"
+ assert_text deleted['name']
+ assert_text aproject['name']
+
+ # Trash another item
+ if method == "button"
+ within('tr', text: aproject['name']) do
+ first('.fa-trash-o').click
+ end
+ else
+ within('tr', text: aproject['name']) do
+ first('input').click
+ end
+ click_button 'Selection'
+ within('.selection-action-container') do
+ click_link 'Remove selected'
+ end
+ end
+
+ wait_for_ajax
+ assert_no_text aproject['name']
+ visit current_path
+ assert_no_text aproject['name']
+
+ # visit trash page
+ visit page_with_token('active', "/trash")
+ click_on "Trashed projects"
+
+ assert_text aproject['name']
+ assert_text aproject['uuid']
+ end
+ end
+