diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-19 21:11:04 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-01-19 21:11:04 +0300 |
commit | 83e4339a328c1a8c8e232d06f7d5e49c6e699fba (patch) | |
tree | 01fd479e3be81f83197724a11ff56e49b65c6e32 /spec/helpers | |
parent | ffa1a49e432cce959676688109e9c71eb08a59f6 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/helpers')
-rw-r--r-- | spec/helpers/invite_members_helper_spec.rb | 84 | ||||
-rw-r--r-- | spec/helpers/projects_helper_spec.rb | 34 |
2 files changed, 108 insertions, 10 deletions
diff --git a/spec/helpers/invite_members_helper_spec.rb b/spec/helpers/invite_members_helper_spec.rb index 914d0931476..ee7a30cd4cb 100644 --- a/spec/helpers/invite_members_helper_spec.rb +++ b/spec/helpers/invite_members_helper_spec.rb @@ -12,6 +12,40 @@ RSpec.describe InviteMembersHelper do assign(:project, project) end + describe "#can_invite_members_for_project?" do + context 'when the user can_import_members' do + before do + allow(helper).to receive(:can_import_members?).and_return(true) + end + + it 'returns true' do + expect(helper.can_invite_members_for_project?(project)).to eq true + expect(helper).to have_received(:can_import_members?) + end + + context 'when feature flag is disabled' do + before do + stub_feature_flags(invite_members_group_modal: false) + end + + it 'returns false' do + expect(helper.can_invite_members_for_project?(project)).to eq false + expect(helper).not_to have_received(:can_import_members?) + end + end + end + + context 'when the user can not invite members' do + before do + expect(helper).to receive(:can_import_members?).and_return(false) + end + + it 'returns false' do + expect(helper.can_invite_members_for_project?(project)).to eq false + end + end + end + describe "#directly_invite_members?" do context 'when the user is an owner' do before do @@ -80,6 +114,51 @@ RSpec.describe InviteMembersHelper do context 'with group' do let_it_be(:group) { create(:group) } + describe "#can_invite_members_for_group?" do + include Devise::Test::ControllerHelpers + + let_it_be(:user) { create(:user) } + + before do + sign_in(user) + allow(helper).to receive(:current_user) { user } + end + + context 'when the user can_import_members' do + before do + allow(helper).to receive(:can?).with(user, :admin_group_member, group).and_return(true) + end + + it 'returns true' do + expect(helper.can_invite_members_for_group?(group)).to eq true + expect(helper).to have_received(:can?).with(user, :admin_group_member, group) + end + + context 'when feature flag is disabled' do + before do + stub_feature_flags(invite_members_group_modal: false) + end + + it 'returns false' do + stub_feature_flags(invite_members_group_modal: false) + + expect(helper.can_invite_members_for_group?(group)).to eq false + expect(helper).not_to have_received(:can?) + end + end + end + + context 'when the user can not invite members' do + before do + expect(helper).to receive(:can?).with(user, :admin_group_member, group).and_return(false) + end + + it 'returns false' do + expect(helper.can_invite_members_for_group?(group)).to eq false + end + end + end + describe "#invite_group_members?" do context 'when the user is an owner' do before do @@ -123,7 +202,7 @@ RSpec.describe InviteMembersHelper do before do allow(helper).to receive(:experiment_tracking_category_and_group) { '_track_property_' } - allow(helper).to receive(:tracking_label).with(owner) + allow(helper).to receive(:tracking_label) allow(helper).to receive(:current_user) { owner } end @@ -132,8 +211,7 @@ RSpec.describe InviteMembersHelper do helper.dropdown_invite_members_link(form_model) - expect(helper).to have_received(:experiment_tracking_category_and_group) - .with(:invite_members_new_dropdown, subject: owner) + expect(helper).to have_received(:experiment_tracking_category_and_group).with(:invite_members_new_dropdown) end context 'with experiment enabled' do diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb index b920e2e5600..9af2811bba8 100644 --- a/spec/helpers/projects_helper_spec.rb +++ b/spec/helpers/projects_helper_spec.rb @@ -854,16 +854,36 @@ RSpec.describe ProjectsHelper do end describe '#can_import_members?' do - let(:owner) { project.owner } + context 'when user is project owner' do + before do + allow(helper).to receive(:current_user) { project.owner } + end - it 'returns false if user cannot admin_project_member' do - allow(helper).to receive(:current_user) { user } - expect(helper.can_import_members?).to eq false + it 'returns true for owner of project' do + expect(helper.can_import_members?).to eq true + end end - it 'returns true if user can admin_project_member' do - allow(helper).to receive(:current_user) { owner } - expect(helper.can_import_members?).to eq true + context 'when user is not a project owner' do + using RSpec::Parameterized::TableSyntax + + where(:user_project_role, :can_import) do + :maintainer | true + :developer | false + :reporter | false + :guest | false + end + + with_them do + before do + project.add_role(user, user_project_role) + allow(helper).to receive(:current_user) { user } + end + + it 'resolves if the user can import members' do + expect(helper.can_import_members?).to eq can_import + end + end end end |