From b76ae638462ab0f673e5915986070518dd3f9ad3 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 19 Aug 2021 09:08:42 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-2-stable-ee --- spec/helpers/invite_members_helper_spec.rb | 112 +++++++++++++---------------- 1 file changed, 51 insertions(+), 61 deletions(-) (limited to 'spec/helpers/invite_members_helper_spec.rb') 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 -- cgit v1.2.1