X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e6c2f09b14d03db040f2b81c451a7630bb78f1b1..45d885d56aa967e9699f5245fea30e71f1e2c47e:/apps/workbench/test/integration/projects_test.rb diff --git a/apps/workbench/test/integration/projects_test.rb b/apps/workbench/test/integration/projects_test.rb index 9ee328c536..9c2842f1c2 100644 --- a/apps/workbench/test/integration/projects_test.rb +++ b/apps/workbench/test/integration/projects_test.rb @@ -1,5 +1,6 @@ require 'integration_helper' require 'helpers/share_object_helper' +require_relative 'integration_test_utils' class ProjectsTest < ActionDispatch::IntegrationTest include ShareObjectHelper @@ -513,7 +514,6 @@ class ProjectsTest < ActionDispatch::IntegrationTest assert page.has_text?("Created new collection in your Home project"), 'Not found flash message that new collection is created in Home project' end - assert page.has_text?('Content hash'), 'Not found content hash in collection page' end end @@ -677,7 +677,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest visit page_with_token 'active', '/projects/' + api_fixture('groups')['aproject']['uuid'] # Point to a bad api server url to generate error - Rails.configuration.arvados_v1_base = "https://[100::f]:1/" + Rails.configuration.arvados_v1_base = "https://[::1]:1/" click_link 'Other objects' within '#Other_objects' do # Error @@ -723,4 +723,111 @@ class ProjectsTest < ActionDispatch::IntegrationTest find("#page-wrapper .nav-tabs :first-child a").click assert_text("Collection modified at") end + + # "Select all" and "Unselect all" options + test "select all and unselect all actions" do + need_selenium 'to check and uncheck checkboxes' + + visit page_with_token 'active', '/projects/' + api_fixture('groups')['aproject']['uuid'] + + # Go to "Data collections" tab and click on "Select all" + click_link 'Data collections' + wait_for_ajax + + # Initially, all selection options for this tab should be disabled + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li.disabled', text: 'Create new collection with selected collections' + assert_selector 'li.disabled', text: 'Copy selected' + end + + # Select all + click_button 'Select all' + + assert_checkboxes_state('input[type=checkbox]', true, '"select all" should check all checkboxes') + + # Now the selection options should be enabled + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li', text: 'Create new collection with selected collections' + assert_no_selector 'li.disabled', text: 'Copy selected' + assert_selector 'li', text: 'Create new collection with selected collections' + assert_no_selector 'li.disabled', text: 'Copy selected' + end + + # Go to Jobs and pipelines tab and assert none selected + click_link 'Jobs and pipelines' + wait_for_ajax + + # Since this is the first visit to this tab, all selection options should be disabled + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li.disabled', text: 'Create new collection with selected collections' + assert_selector 'li.disabled', text: 'Copy selected' + end + + assert_checkboxes_state('input[type=checkbox]', false, '"select all" should check all checkboxes') + + # Select all + click_button 'Select all' + assert_checkboxes_state('input[type=checkbox]', true, '"select all" should check all checkboxes') + + # Applicable selection options should be enabled + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li.disabled', text: 'Create new collection with selected collections' + assert_selector 'li', text: 'Copy selected' + assert_no_selector 'li.disabled', text: 'Copy selected' + end + + # Unselect all + click_button 'Unselect all' + assert_checkboxes_state('input[type=checkbox]', false, '"select all" should check all checkboxes') + + # All selection options should be disabled again + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li.disabled', text: 'Create new collection with selected collections' + assert_selector 'li.disabled', text: 'Copy selected' + end + + # Go back to Data collections tab and verify all are still selected + click_link 'Data collections' + wait_for_ajax + + # Selection options should be enabled based on the fact that all collections are still selected in this tab + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li', text: 'Create new collection with selected collections' + assert_no_selector 'li.disabled', text: 'Copy selected' + assert_selector 'li', text: 'Create new collection with selected collections' + assert_no_selector 'li.disabled', text: 'Copy selected' + end + + assert_checkboxes_state('input[type=checkbox]', true, '"select all" should check all checkboxes') + + # Unselect all + find('button#unselect-all').click + assert_checkboxes_state('input[type=checkbox]', false, '"unselect all" should clear all checkboxes') + + # Now all selection options should be disabled because none of the collections are checked + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li.disabled', text: 'Copy selected' + assert_selector 'li.disabled', text: 'Copy selected' + end + + # Verify checking just one checkbox still works as expected + within('tr', text: api_fixture('collections')['collection_to_move_around_in_aproject']['name']) do + find('input[type=checkbox]').click + end + + click_button 'Selection' + within('.selection-action-container') do + assert_selector 'li', text: 'Create new collection with selected collections' + assert_no_selector 'li.disabled', text: 'Copy selected' + assert_selector 'li', text: 'Create new collection with selected collections' + assert_no_selector 'li.disabled', text: 'Copy selected' + end + end end