Merge branch 'patch-1' of https://github.com/mr-c/arvados into mr-c-patch-1
[arvados.git] / apps / workbench / test / integration / projects_test.rb
index 64a547108bc3e50157a0bebed23392728c83ee45..7a5103007f80f2eba79275a67c602a8cb7d5e3c9 100644 (file)
@@ -1,3 +1,7 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 require 'integration_helper'
 require 'helpers/share_object_helper'
 require_relative 'integration_test_utils'
@@ -39,7 +43,10 @@ class ProjectsTest < ActionDispatch::IntegrationTest
   test 'Create a project and move it into a different project' do
     visit page_with_token 'active', '/projects'
     find("#projects-menu").click
-    find(".dropdown-menu a", text: "Home").click
+    within('.dropdown-menu') do
+      first('li', text: 'Home').click
+    end
+    wait_for_ajax
     find('.btn', text: "Add a subproject").click
 
     within('h2') do
@@ -51,7 +58,10 @@ class ProjectsTest < ActionDispatch::IntegrationTest
 
     visit '/projects'
     find("#projects-menu").click
-    find(".dropdown-menu a", text: "Home").click
+    within('.dropdown-menu') do
+      first('li', text: 'Home').click
+    end
+    wait_for_ajax
     find('.btn', text: "Add a subproject").click
     within('h2') do
       find('.fa-pencil').click
@@ -83,7 +93,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest
   end
 
   test "projects not publicly sharable when anonymous browsing disabled" do
-    Rails.configuration.anonymous_user_token = false
+    Rails.configuration.Users.AnonymousUserToken = ""
     open_groups_sharing
     # Check for a group we do expect first, to make sure the modal's loaded.
     assert_selector(".modal-container .selectable",
@@ -93,7 +103,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest
   end
 
   test "projects publicly sharable when anonymous browsing enabled" do
-    Rails.configuration.anonymous_user_token = "testonlytoken"
+    Rails.configuration.Users.AnonymousUserToken = "testonlytoken"
     open_groups_sharing
     assert_selector(".modal-container .selectable",
                     text: group_name("anonymous_group"))
@@ -122,7 +132,7 @@ class ProjectsTest < ActionDispatch::IntegrationTest
     show_object_using('active', 'groups', 'aproject', 'A Project')
     click_on "Sharing"
     click_on "Share with groups"
-    good_uuid = api_fixture("groups")["private"]["uuid"]
+    good_uuid = api_fixture("groups")["future_project_viewing_group"]["uuid"]
     assert(page.has_selector?(".selectable[data-object-uuid=\"#{good_uuid}\"]"),
            "'share with groups' listing missing owned user group")
     bad_uuid = api_fixture("groups")["asubproject"]["uuid"]
@@ -508,40 +518,40 @@ class ProjectsTest < ActionDispatch::IntegrationTest
 
   [
     ['project_with_10_pipelines', 10, 0],
-    ['project_with_2_pipelines_and_60_jobs', 2, 60],
+    ['project_with_2_pipelines_and_60_crs', 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
-      item_list_parameter = "Jobs_and_pipelines"
+  ].each do |project_name, num_pipelines, num_crs|
+    test "scroll pipeline instances tab for #{project_name} with #{num_pipelines} pipelines and #{num_crs} container requests" do
+      item_list_parameter = "Pipelines_and_processes"
       scroll_setup project_name,
-                   num_pipelines + num_jobs,
+                   num_pipelines + num_crs,
                    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'
+      # Check container request count separately
+      crs_found = page.all('tr[data-kind="arvados#containerRequest"]')
+      found_cr_count = crs_found.count
+      assert_equal num_crs, found_cr_count, 'Did not find expected number of container requests'
     end
   end
 
   test "error while loading tab" do
-    original_arvados_v1_base = Rails.configuration.arvados_v1_base
+    original_arvados_v1_base = Rails.configuration.Services.Controller.ExternalURL
 
     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://[::1]:1/"
+    Rails.configuration.Services.Controller.ExternalURL = "https://[::1]:1/"
     click_link 'Other objects'
     within '#Other_objects' do
       # Error
       assert_selector('a', text: 'Reload tab')
 
       # Now point back to the orig api server and reload tab
-      Rails.configuration.arvados_v1_base = original_arvados_v1_base
+      Rails.configuration.Services.Controller.ExternalURL = original_arvados_v1_base
       click_link 'Reload tab'
       assert_no_selector('a', text: 'Reload tab')
       assert_selector('button', text: 'Selection')
@@ -552,7 +562,6 @@ class ProjectsTest < ActionDispatch::IntegrationTest
   end
 
   test "add new project using projects dropdown" do
-    # verify that selection options are disabled on the project until an item is selected
     visit page_with_token 'active', '/'
 
     # Add a new project
@@ -560,13 +569,6 @@ class ProjectsTest < ActionDispatch::IntegrationTest
     click_link 'Add a new project'
     assert_text 'New project'
     assert_text 'No description provided'
-
-    # Add one more new project
-    find("#projects-menu").click
-    click_link 'Add a new project'
-    match = /New project \(\d\)/.match page.text
-    assert match, 'Expected project name not found'
-    assert_text 'No description provided'
   end
 
   test "first tab loads data when visiting other tab directly" do
@@ -612,8 +614,8 @@ class ProjectsTest < ActionDispatch::IntegrationTest
       assert_no_selector 'li.disabled', text: 'Copy selected'
     end
 
-    # Go to Jobs and pipelines tab and assert none selected
-    click_link 'Jobs and pipelines'
+    # Go to Pipelines and processes tab and assert none selected
+    click_link 'Pipelines and processes'
     wait_for_ajax
 
     # Since this is the first visit to this tab, all selection options should be disabled
@@ -709,4 +711,48 @@ class ProjectsTest < ActionDispatch::IntegrationTest
      assert page.has_text?('Unrestricted public data'), 'No text - Unrestricted public data'
      assert page.has_text?('An anonymously accessible project'), 'No text - An anonymously accessible project'
   end
+
+  test "test star and unstar project" do
+    visit page_with_token 'active', "/projects/#{api_fixture('groups')['anonymously_accessible_project']['uuid']}"
+
+    # add to favorites
+    find('.fa-star-o').click
+    wait_for_ajax
+
+    find("#projects-menu").click
+    within('.dropdown-menu') do
+      assert_selector 'li', text: 'Unrestricted public data'
+    end
+
+    # remove from favotires
+    find('.fa-star').click
+    wait_for_ajax
+
+    find("#projects-menu").click
+    within('.dropdown-menu') do
+      assert_no_selector 'li', text: 'Unrestricted public data'
+    end
+  end
+
+  [
+    ['Workflow with input specifications', 'this workflow has inputs specified', 'Provide a value for the following'],
+  ].each do |template_name, preview_txt, process_txt|
+    test "run a process using template #{template_name} in a project" do
+      project = api_fixture('groups')['aproject']
+      visit page_with_token 'active', '/projects/' + project['uuid']
+
+      find('.btn', text: 'Run a process').click
+
+      # in the chooser, verify preview and click Next button
+      within('.modal-dialog') do
+        find('.selectable', text: template_name).click
+        assert_text preview_txt
+        find('.btn', text: 'Next: choose inputs').click
+      end
+
+      # in the process page now
+      assert_text process_txt
+      assert_text project['name']
+    end
+  end
 end