+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
require 'integration_helper'
class TrashTest < ActionDispatch::IntegrationTest
visit page_with_token('active', "/trash")
assert_text deleted['name']
+ assert_text deleted['uuid']
+ assert_text deleted['portable_data_hash']
assert_text expired1['name']
assert_no_text expired2['name'] # not readable by this user
assert_no_text 'foo_file' # not trash
wait_for_ajax
- assert_no_text expired1['name']
+ assert_text "The collection with UUID #{expired1['uuid']} is in the trash"
+
+ click_on "Click here to untrash '#{expired1['name']}'"
# verify that the two un-trashed items are now shown in /collections page
visit page_with_token('active', "/collections")
assert_no_text expired2['uuid']
end
+ ["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
+
test "trash page with search" do
deleted = api_fixture('collections')['deleted_on_next_sweep']
expired = api_fixture('collections')['unique_expired_collection']
visit page_with_token('active', "/trash")
assert_text deleted['name']
+ assert_text deleted['uuid']
+ assert_text deleted['portable_data_hash']
assert_text expired['name']
page.find_field('Search trash').set 'expired'
- assert_text expired['name']
assert_no_text deleted['name']
+ assert_text expired['name']
+
+ page.find_field('Search trash').set deleted['portable_data_hash'][0..9]
+
+ assert_no_text expired['name']
+ assert_text deleted['name']
+ assert_text deleted['uuid']
+ assert_text deleted['portable_data_hash']
click_button 'Selection...'
within('.selection-action-container') do