diff options
Diffstat (limited to 'spec/features/projects/members')
4 files changed, 55 insertions, 14 deletions
diff --git a/spec/features/projects/members/invite_group_spec.rb b/spec/features/projects/members/invite_group_spec.rb index 4caf3e947c7..6ce6834b5d5 100644 --- a/spec/features/projects/members/invite_group_spec.rb +++ b/spec/features/projects/members/invite_group_spec.rb @@ -32,6 +32,14 @@ RSpec.describe 'Project > Members > Invite group', :js do expect(page).to have_selector(expected_invite_group_selector) end + + it 'does not display either the form or the button when visiting the page not signed in' do + project = create(:project, namespace: create(:group)) + + visit project_project_members_path(project) + + expect(page).not_to have_selector(expected_invite_group_selector) + end end describe 'Share with group lock' do diff --git a/spec/features/projects/members/list_spec.rb b/spec/features/projects/members/list_spec.rb index f1fc579bb8a..25598146604 100644 --- a/spec/features/projects/members/list_spec.rb +++ b/spec/features/projects/members/list_spec.rb @@ -6,17 +6,17 @@ RSpec.describe 'Project members list', :js do include Spec::Support::Helpers::Features::MembersHelpers include Spec::Support::Helpers::Features::InviteMembersModalHelper - let(:user1) { create(:user, name: 'John Doe') } - let(:user2) { create(:user, name: 'Mary Jane') } - let(:group) { create(:group) } - let(:project) { create(:project, :internal, namespace: group) } + let_it_be(:user1) { create(:user, name: 'John Doe') } + let_it_be(:user2) { create(:user, name: 'Mary Jane') } + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, :internal, namespace: group) } before do sign_in(user1) group.add_owner(user1) end - it 'show members from project and group' do + it 'show members from project and group', :aggregate_failures do project.add_developer(user2) visit_members_page @@ -25,7 +25,7 @@ RSpec.describe 'Project members list', :js do expect(second_row).to have_content(user2.name) end - it 'show user once if member of both group and project' do + it 'show user once if member of both group and project', :aggregate_failures do project.add_developer(user1) visit_members_page @@ -47,7 +47,7 @@ RSpec.describe 'Project members list', :js do end end - it 'add user to project' do + it 'add user to project', :snowplow, :aggregate_failures do visit_members_page invite_member(user2.name, role: 'Reporter') @@ -55,9 +55,17 @@ RSpec.describe 'Project members list', :js do page.within find_member_row(user2) do expect(page).to have_button('Reporter') end + + expect_snowplow_event( + category: 'Members::CreateService', + action: 'create_member', + label: 'project-members-page', + property: 'existing_user', + user: user1 + ) end - it 'uses ProjectMember access_level_roles for the invite members modal access option' do + it 'uses ProjectMember access_level_roles for the invite members modal access option', :aggregate_failures do visit_members_page click_on 'Invite members' @@ -95,7 +103,7 @@ RSpec.describe 'Project members list', :js do expect(members_table).not_to have_content(other_user.name) end - it 'invite user to project' do + it 'invite user to project', :snowplow, :aggregate_failures do visit_members_page invite_member('test@example.com', role: 'Reporter') @@ -105,6 +113,28 @@ RSpec.describe 'Project members list', :js do page.within find_invited_member_row('test@example.com') do expect(page).to have_button('Reporter') end + + expect_snowplow_event( + category: 'Members::InviteService', + action: 'create_member', + label: 'project-members-page', + property: 'net_new_user', + user: user1 + ) + end + + context 'as a signed out visitor viewing a public project' do + let_it_be(:project) { create(:project, :public) } + + before do + sign_out(user1) + end + + it 'does not show the Invite members button when not signed in' do + visit_members_page + + expect(page).not_to have_button('Invite members') + end end context 'project bots' do @@ -114,7 +144,7 @@ RSpec.describe 'Project members list', :js do project.add_maintainer(project_bot) end - it 'does not show form used to change roles and "Expiration date" or the remove user button' do + it 'does not show form used to change roles and "Expiration date" or the remove user button', :aggregate_failures do visit_members_page page.within find_member_row(project_bot) do diff --git a/spec/features/projects/members/tabs_spec.rb b/spec/features/projects/members/tabs_spec.rb index 471be26e126..5611e7ee810 100644 --- a/spec/features/projects/members/tabs_spec.rb +++ b/spec/features/projects/members/tabs_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe 'Projects > Members > Tabs' do +RSpec.describe 'Projects > Members > Tabs', :js do include Spec::Support::Helpers::Features::MembersHelpers using RSpec::Parameterized::TableSyntax @@ -44,7 +44,7 @@ RSpec.describe 'Projects > Members > Tabs' do end end - context 'when searching "Groups"', :js do + context 'when searching "Groups"' do before do click_link 'Groups' diff --git a/spec/features/projects/members/user_requests_access_spec.rb b/spec/features/projects/members/user_requests_access_spec.rb index 7073741a92d..94543290050 100644 --- a/spec/features/projects/members/user_requests_access_spec.rb +++ b/spec/features/projects/members/user_requests_access_spec.rb @@ -3,8 +3,9 @@ require 'spec_helper' RSpec.describe 'Projects > Members > User requests access', :js do - let(:user) { create(:user) } - let(:project) { create(:project, :public, :repository) } + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :public, :repository) } + let(:maintainer) { project.owner } before do @@ -47,6 +48,8 @@ RSpec.describe 'Projects > Members > User requests access', :js do expect(project.requesters.exists?(user_id: user)).to be_truthy + click_link 'Project information' + page.within('.nav-sidebar') do click_link('Members') end |