summaryrefslogtreecommitdiff
path: root/spec/helpers/invite_members_helper_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/helpers/invite_members_helper_spec.rb')
-rw-r--r--spec/helpers/invite_members_helper_spec.rb112
1 files changed, 51 insertions, 61 deletions
diff --git a/spec/helpers/invite_members_helper_spec.rb b/spec/helpers/invite_members_helper_spec.rb
index 3d2adaa5b5d..e0e05140d6c 100644
--- a/spec/helpers/invite_members_helper_spec.rb
+++ b/spec/helpers/invite_members_helper_spec.rb
@@ -14,102 +14,92 @@ RSpec.describe InviteMembersHelper do
helper.extend(Gitlab::Experimentation::ControllerConcern)
end
- context 'with project' do
- before do
- allow(helper).to receive(:current_user) { owner }
- assign(:project, project)
- end
-
- describe "#can_invite_members_for_project?" do
- context 'when the user can_manage_project_members' do
+ describe '#common_invite_modal_dataset' do
+ context 'when member_areas_of_focus is enabled', :experiment do
+ context 'with control experience' do
before do
- allow(helper).to receive(:can_manage_project_members?).and_return(true)
+ stub_experiments(member_areas_of_focus: :control)
end
- it 'returns true' do
- expect(helper.can_invite_members_for_project?(project)).to eq true
- expect(helper).to have_received(:can_manage_project_members?)
- end
+ it 'has expected attributes' do
+ attributes = {
+ areas_of_focus_options: [],
+ no_selection_areas_of_focus: []
+ }
- 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_manage_project_members?)
- end
+ expect(helper.common_invite_modal_dataset(project)).to include(attributes)
end
end
- context 'when the user can not manage project members' do
+ context 'with candidate experience' do
before do
- expect(helper).to receive(:can_manage_project_members?).and_return(false)
+ stub_experiments(member_areas_of_focus: :candidate)
end
- it 'returns false' do
- expect(helper.can_invite_members_for_project?(project)).to eq false
+ it 'has expected attributes', :aggregate_failures do
+ output = helper.common_invite_modal_dataset(project)
+
+ expect(output[:no_selection_areas_of_focus]).to eq ['no_selection']
+ expect(Gitlab::Json.parse(output[:areas_of_focus_options]).first['value']).to eq 'Contribute to the codebase'
end
end
end
- describe "#directly_invite_members?" do
- context 'when the user is an owner' do
- before do
- allow(helper).to receive(:current_user) { owner }
- end
-
- it 'returns true' do
- expect(helper.directly_invite_members?).to eq true
- end
+ context 'when member_areas_of_focus is disabled' do
+ before do
+ stub_feature_flags(member_areas_of_focus: false)
end
- context 'when the user is a developer' do
- before do
- allow(helper).to receive(:current_user) { developer }
- end
+ it 'has expected attributes' do
+ attributes = {
+ id: project.id,
+ name: project.name,
+ default_access_level: Gitlab::Access::GUEST,
+ areas_of_focus_options: [],
+ no_selection_areas_of_focus: []
+ }
- it 'returns false' do
- expect(helper.directly_invite_members?).to eq false
- end
+ expect(helper.common_invite_modal_dataset(project)).to match(attributes)
end
end
end
- context 'with group' do
- let_it_be(:group) { create(:group) }
+ context 'with project' do
+ before do
+ allow(helper).to receive(:current_user) { owner }
+ assign(:project, project)
+ end
- describe "#invite_group_members?" do
- context 'when the user is an owner' do
+ describe "#can_invite_members_for_project?" do
+ context 'when the user can_admin_project_member' do
before do
- group.add_owner(owner)
- allow(helper).to receive(:current_user) { owner }
+ allow(helper).to receive(:can?).with(owner, :admin_project_member, project).and_return(true)
end
- it 'returns false' do
- allow(helper).to receive(:experiment_enabled?).with(:invite_members_empty_group_version_a) { false }
-
- expect(helper.invite_group_members?(group)).to eq false
+ it 'returns true', :aggregate_failures do
+ expect(helper.can_invite_members_for_project?(project)).to eq true
+ expect(helper).to have_received(:can?).with(owner, :admin_project_member, project)
end
- it 'returns true' do
- allow(helper).to receive(:experiment_enabled?).with(:invite_members_empty_group_version_a) { true }
+ context 'when feature flag is disabled' do
+ before do
+ stub_feature_flags(invite_members_group_modal: false)
+ end
- expect(helper.invite_group_members?(group)).to eq true
+ it 'returns false', :aggregate_failures do
+ expect(helper.can_invite_members_for_project?(project)).to eq false
+ expect(helper).not_to have_received(:can?).with(owner, :admin_project_member, project)
+ end
end
end
- context 'when the user is a developer' do
+ context 'when the user can not manage project members' do
before do
- group.add_developer(developer)
- allow(helper).to receive(:current_user) { developer }
+ expect(helper).to receive(:can?).with(owner, :admin_project_member, project).and_return(false)
end
it 'returns false' do
- allow(helper).to receive(:experiment_enabled?).with(:invite_members_empty_group_version_a) { true }
-
- expect(helper.invite_group_members?(group)).to eq false
+ expect(helper.can_invite_members_for_project?(project)).to eq false
end
end
end