X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5fdfe4ca7ea91f3da518e6b20d970bf6fcd5ba8c..a3222e35cda68c8e48a17921c33ac37ecb5c3bac:/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 af714aae07..b2c9d772d1 100644 --- a/apps/workbench/test/integration/projects_test.rb +++ b/apps/workbench/test/integration/projects_test.rb @@ -29,20 +29,24 @@ class ProjectsTest < ActionDispatch::IntegrationTest project_uuid = api_fixture('groups')['aproject']['uuid'] specimen_uuid = api_fixture('specimens')['owned_by_aproject_with_no_name_link']['uuid'] visit page_with_token 'active', '/projects/' + project_uuid - within(".selection-action-container") do - within (first('tr', text: 'Specimen')) do + click_link 'Other objects' + within '.selection-action-container' do + # Wait for the tab to load: + assert_selector 'tr[data-kind="arvados#specimen"]' + within first('tr', text: 'Specimen') do find(".fa-pencil").click find('.editable-input input').set('Now I have a name.') find('.glyphicon-ok').click - find('.editable', text: 'Now I have a name.').click + assert_selector '.editable', text: 'Now I have a name.' find(".fa-pencil").click find('.editable-input input').set('Now I have a new name.') find('.glyphicon-ok').click - end + end wait_for_ajax - find('.editable', text: 'Now I have a new name.') + assert_selector '.editable', text: 'Now I have a new name.' end visit current_path + click_link 'Other objects' within '.selection-action-container' do find '.editable', text: 'Now I have a new name.' page.assert_no_selector '.editable', text: 'Now I have a name.' @@ -87,25 +91,39 @@ class ProjectsTest < ActionDispatch::IntegrationTest assert(page.has_text?("A Project"), "not on expected project page") end - def count_shares - find('#project_sharing').all('tr').size + def share_rows + find('#project_sharing').all('tr') end def add_share_and_check(share_type, name) assert(page.has_no_text?(name), "project is already shared with #{name}") - start_share_count = count_shares + start_share_count = share_rows.size click_on("Share with #{share_type}") - find(".selectable", text: name).click - find(".modal-footer a,button", text: "Add").click - assert(page.has_link?(name), - "new share was not added to sharing table") - assert_equal(start_share_count + 1, count_shares, - "new share did not add row to sharing table") + within(".modal-container") do + # Order is important here: we should find something that appears in the + # modal before we make any assertions about what's not in the modal. + # Otherwise, the not-included assertions might falsely pass because + # the modal hasn't loaded yet. + find(".selectable", text: name).click + assert(has_no_selector?(".modal-dialog-preview-pane"), + "preview pane available in sharing dialog") + assert_raises(Capybara::ElementNotFound, + "Projects pulldown available from sharing dialog") do + click_on "All projects" + end + click_on "Add" + end + using_wait_time(Capybara.default_wait_time * 3) do + assert(page.has_link?(name), + "new share was not added to sharing table") + assert_equal(start_share_count + 1, share_rows.size, + "new share did not add row to sharing table") + end end def modify_share_and_check(name) - start_share_count = count_shares - link_row = all("#project_sharing tr").select { |row| row.has_text?(name) } + start_rows = share_rows + link_row = start_rows.select { |row| row.has_text?(name) } assert_equal(1, link_row.size, "row with new permission not found") within(link_row.first) do click_on("Read") @@ -115,10 +133,12 @@ class ProjectsTest < ActionDispatch::IntegrationTest "failed to change access level on new share") click_on "Revoke" end - assert(page.has_no_text?(name), - "new share row still exists after being revoked") - assert_equal(start_share_count - 1, count_shares, - "revoking share did not remove row from sharing table") + using_wait_time(Capybara.default_wait_time * 3) do + assert(page.has_no_text?(name), + "new share row still exists after being revoked") + assert_equal(start_rows.size - 1, share_rows.size, + "revoking share did not remove row from sharing table") + end end test "project viewer can't see project sharing tab" do @@ -145,4 +165,16 @@ class ProjectsTest < ActionDispatch::IntegrationTest add_share_and_check("groups", new_name) modify_share_and_check(new_name) end + + test "'share with group' listing does not offer projects" do + show_project_using("active") + click_on "Sharing" + click_on "Share with groups" + good_uuid = api_fixture("groups")["private"]["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"] + assert(page.has_no_selector?(".selectable[data-object-uuid=\"#{bad_uuid}\"]"), + "'share with groups' listing includes project") + end end