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}")
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"
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
['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
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
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
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
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