X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/61f351e9e3542308fe0a41fa7f41e4de85130c24..1ed38089f9d9969abde1849743f0fdf52d3d2d93:/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 f0d612b625..66b62c3dae 100644 --- a/apps/workbench/test/integration/projects_test.rb +++ b/apps/workbench/test/integration/projects_test.rb @@ -182,7 +182,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest find('#project_sharing').all('tr') end - def add_share_and_check(share_type, name) + def add_share_and_check(share_type, name, obj=nil) assert(page.has_no_text?(name), "project is already shared with #{name}") start_share_count = share_rows.size click_on("Share with #{share_type}") @@ -194,6 +194,9 @@ class ProjectsTest < ActionDispatch::IntegrationTest find(".selectable", text: name).click assert(has_no_selector?(".modal-dialog-preview-pane"), "preview pane available in sharing dialog") + if share_type == 'users' and obj and obj['email'] + assert(page.has_text?(obj['email']), "Did not find user's email") + end assert_raises(Capybara::ElementNotFound, "Projects pulldown available from sharing dialog") do click_on "All projects" @@ -240,7 +243,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest show_project_using("active") click_on "Sharing" - add_share_and_check("users", new_name) + add_share_and_check("users", new_name, add_user) modify_share_and_check(new_name) end @@ -490,6 +493,10 @@ class ProjectsTest < ActionDispatch::IntegrationTest ['project with 201 collections', 201], # two pages of data ].each do |project_name, amount| test "scroll collections tab for #{project_name} with #{amount} objects" do + headless = Headless.new + headless.start + Capybara.current_driver = :selenium + visit page_with_token 'user1_with_load' find("#projects-menu").click @@ -513,13 +520,10 @@ class ProjectsTest < ActionDispatch::IntegrationTest unexpected_items = [] collections_count = 0 within('.arv-project-Data_collections') do - scrollbar_present = page.execute_script("return document.documentElement.scrollHeight>document.documentElement.clientHeight;"); - if scrollbar_present - page.execute_script "window.scrollBy(0,10000)" - begin - wait_for_ajax - rescue - end + page.execute_script "window.scrollBy(0,999000)" + begin + wait_for_ajax + rescue end # Visit all rows. If not all expected collections are found, retry @@ -527,7 +531,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest collections_count = found_collections.count (0..collections_count-1).each do |i| - # Found row text would be of the format "Show Collection_#{n} " + # Found row text would be of the format "Show Collection_#{n} " collection_name = found_collections[i].text.split[1] if !my_collections.include? collection_name unexpected_items << collection_name @@ -537,30 +541,29 @@ class ProjectsTest < ActionDispatch::IntegrationTest end assert_equal true, unexpected_items.empty?, "Found unexpected items #{unexpected_items.inspect}" - if amount > 200 - assert_equal 200, collections_count, "Found different number of collections" - assert_equal amount-200, verify_collections.length, "Did not find all the collections" - else - assert_equal amount, collections_count, "Found different number of collections" - assert_equal true, verify_collections.empty?, "Did not find all the collections" - end + assert_equal amount, collections_count, "Found different number of collections" + assert_equal true, verify_collections.empty?, "Did not find all the collections" end end end [ ['project with 10 pipelines', 10, 0], - ['project with 20 pipelines and jobs', 20, 20], -# ['project with 250 pipelines', 250, 0], +# ['project with 200 jobs and 10 pipelines', 2, 200], + ['project with 25 pipelines', 25, 0], ].each do |project_name, num_pipelines, num_jobs| test "scroll pipeline instances tab for #{project_name} with #{num_pipelines} pipelines and #{num_jobs} jobs" do + headless = Headless.new + headless.start + Capybara.current_driver = :selenium + visit page_with_token 'user1_with_load' find("#projects-menu").click find(".dropdown-menu a", text: project_name).click my_pipelines = [] - (1..num_pipelines).each do |i| + (0..num_pipelines-1).each do |i| name = "pipeline_#{i}" my_pipelines << name end @@ -572,24 +575,21 @@ class ProjectsTest < ActionDispatch::IntegrationTest wait_for_ajax rescue end - + verify_pipelines = my_pipelines.dup unexpected_items = [] object_count = 0 within('.arv-project-Jobs_and_pipelines') do - scrollbar_present = page.execute_script("return document.documentElement.scrollHeight>document.documentElement.clientHeight;"); - if scrollbar_present - page.execute_script "window.scrollBy(0,10000)" - begin - wait_for_ajax - rescue - end + page.execute_script "window.scrollBy(0,999000)" + begin + wait_for_ajax + rescue end # Visit all rows. Repeat if not all expected my_pipelines are found (inifinite scrolling should kick in) pipelines_found = page.all('tr[data-kind="arvados#pipelineInstance"]') - pipeline_count = pipelines_found.count - (0..pipeline_count-1).each do |i| + found_pipeline_count = pipelines_found.count + (0..found_pipeline_count-1).each do |i| name = pipelines_found[i].text.split[1] if !my_pipelines.include? name unexpected_items << name @@ -599,12 +599,33 @@ class ProjectsTest < ActionDispatch::IntegrationTest assert_equal true, unexpected_items.empty?, "Found unexpected items #{unexpected_items.inspect}" end - assert_equal num_pipelines, pipeline_count, "Found different number of pipelines" - assert_equal true, verify_pipelines.empty?, "Did not find all the pipelines" jobs_found = page.all('tr[data-kind="arvados#job"]') - job_count = jobs_found.count - assert_equal num_jobs, job_count, 'Did not find expected number of jobs' + found_job_count = jobs_found.count + + assert_equal num_pipelines, found_pipeline_count, "Found different number of pipelines and jobs" + assert_equal num_jobs, found_job_count, 'Did not find expected number of jobs' + assert_equal true, verify_pipelines.empty?, "Did not find all the pipelines and jobs" + end + end + end + + # Move button accessibility + [ + ['admin', true], + ['active', true], # project owner + ['project_viewer', false], + ].each do |user, can_move| + test "#{user} can move subproject under another user's Home #{can_move}" do + project = api_fixture('groups')['aproject'] + collection = api_fixture('collections')['collection_to_move_around_in_aproject'] + + # verify the project move button + visit page_with_token user, "/projects/#{project['uuid']}" + if can_move + assert page.has_link? 'Move project...' + else + assert page.has_no_link? 'Move project...' end end end