[ARVADOS] updated: 2a482395964360260020bf70e7645b08b106b1f1

git at public.curoverse.com git at public.curoverse.com
Sat Nov 1 10:22:53 EDT 2014


Summary of changes:
 apps/workbench/test/integration/projects_test.rb  | 260 ++++++++--------------
 services/api/test/fixtures/pipeline_instances.yml |   6 +-
 2 files changed, 102 insertions(+), 164 deletions(-)

       via  2a482395964360260020bf70e7645b08b106b1f1 (commit)
      from  9fa70c844ccc36a8c9543a8fafd2b56388c7a957 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 2a482395964360260020bf70e7645b08b106b1f1
Author: Phil Hodgson <bitbucket at philhodgson.net>
Date:   Sat Nov 1 15:22:48 2014 +0100

    3618: refactor scroll tests to share code

diff --git a/apps/workbench/test/integration/projects_test.rb b/apps/workbench/test/integration/projects_test.rb
index 0e12d43..5da6153 100644
--- a/apps/workbench/test/integration/projects_test.rb
+++ b/apps/workbench/test/integration/projects_test.rb
@@ -488,191 +488,129 @@ class ProjectsTest < ActionDispatch::IntegrationTest
     end
   end
 
-  [
-    ['project with 10 collections', 10],
-    ['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
+  def scroll_setup(project_name,
+                   total_nbr_items,
+                   item_list_parameter,
+                   sorted = false,
+                   sort_parameters = nil)
+    headless = Headless.new
+    headless.start
+    Capybara.current_driver = :selenium
 
-      visit page_with_token 'user1_with_load'
+    project_uuid = api_fixture('groups')[project_name]['uuid']
+    visit page_with_token 'user1_with_load', '/projects/' + project_uuid
 
-      find("#projects-menu").click
-      find(".dropdown-menu a", text: project_name).click
+    assert(page.has_text?("#{item_list_parameter.humanize} (#{total_nbr_items})"), "Number of #{item_list_parameter.humanize} did not match the input amount")
 
-      my_collections = []
-      for i in 1..amount
-        my_collections << "Collection_#{i}"
-      end
+    click_link item_list_parameter.humanize
+    wait_for_ajax
 
-      # verify Data collections scroll
-      assert(page.has_text?("Data collections (#{amount})"), "Number of collections did not match the input amount")
+    if sorted
+      find("th[data-sort-order='#{sort_parameters.gsub(/\s/,'')}']").click
+      wait_for_ajax
+    end
+  end
 
-      click_link 'Data collections'
+  def scroll_items_check(nbr_items,
+                         fixture_prefix,
+                         item_list_parameter,
+                         item_selector,
+                         sorted = false)
+    items = []
+    for i in 1..nbr_items
+      items << "#{fixture_prefix}#{i}"
+    end
+
+    verify_items = items.dup
+    unexpected_items = []
+    item_count = 0
+    within(".arv-project-#{item_list_parameter}") do
+      page.execute_script "window.scrollBy(0,999000)"
       begin
         wait_for_ajax
       rescue
       end
 
-      verify_collections = my_collections.dup
-      unexpected_items = []
-      collections_count = 0
-      within('.arv-project-Data_collections') do
-        page.execute_script "window.scrollBy(0,999000)"
-        begin
-          wait_for_ajax
-        rescue
+      # Visit all rows. If not all expected items are found, retry
+      found_items = page.all(item_selector)
+      item_count = found_items.count
+
+      previous = nil
+      (0..item_count-1).each do |i|
+        # Found row text using the fixture string e.g. "Show Collection_#{n} "
+        item_name = found_items[i].text.split[1]
+        if !items.include? item_name
+          unexpected_items << item_name
+        else
+          verify_items.delete item_name
         end
-
-        # Visit all rows. If not all expected collections are found, retry
-        found_collections = page.all('tr[data-kind="arvados#collection"]')
-        collections_count = found_collections.count
-
-        (0..collections_count-1).each do |i|
-          # 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
-          else
-            verify_collections.delete collection_name
-          end
+        if sorted
+          # check sort order
+          assert_operator( previous.downcase, :<=, item_name.downcase) if previous
+          previous = item_name
         end
-
-        assert_equal true, unexpected_items.empty?, "Found unexpected items #{unexpected_items.inspect}"
-        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 true, unexpected_items.empty?, "Found unexpected #{item_list_parameter.humanize} #{unexpected_items.inspect}"
+      assert_equal nbr_items, item_count, "Found different number of #{item_list_parameter.humanize}"
+      assert_equal true, verify_items.empty?, "Did not find all the #{item_list_parameter.humanize}"
     end
   end
 
   [
-    ['project with 10 collections', 10],
-    ['project with 201 collections', 201], # two pages of data
-  ].each do |project_name, amount|
-    test "scroll collections tab for #{project_name} with #{amount} objects, with ascending sort (case insensitive)" 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_collections = []
-      for i in 1..amount
-        my_collections << "Collection_#{i}"
-      end
-
-      # verify Data collections scroll
-      assert(page.has_text?("Data collections (#{amount})"), "Number of collections did not match the input amount")
-
-      click_link 'Data collections'
-      begin
-        wait_for_ajax
-      rescue
-      end
-
-      find('th[data-sort-order="collections.name"]').click
-      wait_for_ajax
-
-      verify_collections = my_collections.dup
-      unexpected_items = []
-      collections_count = 0
-      within('.arv-project-Data_collections') do
-        page.execute_script "window.scrollBy(0,999000)"
-        begin
-          wait_for_ajax
-        rescue
-        end
-
-        # Visit all rows. If not all expected collections are found, retry
-        found_collections = page.all('tr[data-kind="arvados#collection"]')
-        collections_count = found_collections.count
-
-        previous = nil
-        (0..collections_count-1).each do |i|
-          # 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
-          else
-            verify_collections.delete collection_name
-          end
-          # check sort order
-          assert_operator( previous.downcase, :<=, collection_name.downcase) if previous
-          previous = collection_name
-        end
+    ['project_with_10_collections', 10],
+    ['project_with_201_collections', 201], # two pages of data
+  ].each do |project_name, nbr_items|
+    test "scroll collections tab for #{project_name} with #{nbr_items} objects" do
+      item_list_parameter = "Data_collections"
+      scroll_setup project_name,
+                   nbr_items,
+                   item_list_parameter
+      scroll_items_check nbr_items,
+                         "Collection_",
+                         item_list_parameter,
+                         'tr[data-kind="arvados#collection"]'
+    end
+  end
 
-        assert_equal true, unexpected_items.empty?, "Found unexpected items #{unexpected_items.inspect}"
-        assert_equal amount, collections_count, "Found different number of collections"
-        assert_equal true, verify_collections.empty?, "Did not find all the collections"
-      end
+  [
+    ['project_with_10_collections', 10],
+    ['project_with_201_collections', 201], # two pages of data
+  ].each do |project_name, nbr_items|
+    test "scroll collections tab for #{project_name} with #{nbr_items} objects with ascending sort (case insensitive)" do
+      item_list_parameter = "Data_collections"
+      scroll_setup project_name,
+                   nbr_items,
+                   item_list_parameter,
+                   true,
+                   "collections.name"
+      scroll_items_check nbr_items,
+                         "Collection_",
+                         item_list_parameter,
+                         'tr[data-kind="arvados#collection"]',
+                         true
     end
   end
 
   [
-    ['project with 10 pipelines', 10, 0],
-    ['project with 2 pipelines and 60 jobs', 2, 60],
-    ['project with 25 pipelines', 25, 0],
+    ['project_with_10_pipelines', 10, 0],
+    ['project_with_2_pipelines_and_60_jobs', 2, 60],
+    ['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 = []
-      (0..num_pipelines-1).each do |i|
-        name = "pipeline_#{i}"
-        my_pipelines << name
-      end
-
-      # verify Jobs and pipelines tab scroll
-      assert(page.has_text?("Jobs and pipelines (#{num_pipelines+num_jobs})"), "Number of objects did not match the input counts")
-      click_link 'Jobs and pipelines'
-      begin
-        wait_for_ajax
-      rescue
-      end
-
-      verify_pipelines = my_pipelines.dup
-      unexpected_items = []
-      object_count = 0
-      within('.arv-project-Jobs_and_pipelines') do
-        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"]')
-        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
-          else
-            verify_pipelines.delete name
-          end
-
-          assert_equal true, unexpected_items.empty?, "Found unexpected items #{unexpected_items.inspect}"
-        end
-
-        jobs_found = page.all('tr[data-kind="arvados#job"]')
-        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
+      item_list_parameter = "Jobs_and_pipelines"
+      scroll_setup project_name,
+                   num_pipelines + num_jobs,
+                   item_list_parameter
+      # check the general scrolling and the pipelines
+      scroll_items_check num_pipelines,
+                         "pipeline_",
+                         item_list_parameter,
+                         'tr[data-kind="arvados#pipelineInstance"]'
+      # Check job count separately
+      jobs_found = page.all('tr[data-kind="arvados#job"]')
+      found_job_count = jobs_found.count
+      assert_equal num_jobs, found_job_count, 'Did not find expected number of jobs'
     end
   end
 
diff --git a/services/api/test/fixtures/pipeline_instances.yml b/services/api/test/fixtures/pipeline_instances.yml
index 3444264..0317db3 100644
--- a/services/api/test/fixtures/pipeline_instances.yml
+++ b/services/api/test/fixtures/pipeline_instances.yml
@@ -155,7 +155,7 @@ pipeline_with_newer_template:
 # Do not add your fixtures below this line as the rest of this file will be trimmed by test_helper
 
 # pipelines in project_with_10_pipelines
-<% for i in 0..9 do %>
+<% for i in 1..10 do %>
 pipeline_<%=i%>_of_10:
   name: pipeline_<%= i %>
   state: Failed
@@ -176,7 +176,7 @@ pipeline_<%=i%>_of_10:
 <% end %>
 
 # pipelines in project_with_2_pipelines_and_100_jobs
-<% for i in 0..1 do %>
+<% for i in 1..2 do %>
 pipeline_<%=i%>_of_2_pipelines_and_100_jobs:
   name: pipeline_<%= i %>
   state: New
@@ -195,7 +195,7 @@ pipeline_<%=i%>_of_2_pipelines_and_100_jobs:
 <% end %>
 
 # pipelines in project_with_25_pipelines
-<% for i in 0..24 do %>
+<% for i in 1..25 do %>
 pipeline_<%=i%>_of_25:
   name: pipeline_<%=i%>
   state: Failed

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list