diff options
Diffstat (limited to 'spec/helpers/ci/runners_helper_spec.rb')
-rw-r--r-- | spec/helpers/ci/runners_helper_spec.rb | 79 |
1 files changed, 58 insertions, 21 deletions
diff --git a/spec/helpers/ci/runners_helper_spec.rb b/spec/helpers/ci/runners_helper_spec.rb index c170d7fae67..febdc3bab65 100644 --- a/spec/helpers/ci/runners_helper_spec.rb +++ b/spec/helpers/ci/runners_helper_spec.rb @@ -83,22 +83,9 @@ RSpec.describe Ci::RunnersHelper, feature_category: :runner_fleet do end describe '#admin_runners_data_attributes' do - let_it_be(:admin) { create(:user, :admin) } - let_it_be(:instance_runner) { create(:ci_runner, :instance) } - let_it_be(:project_runner) { create(:ci_runner, :project) } + subject { helper.admin_runners_data_attributes } - before do - allow(helper).to receive(:current_user).and_return(admin) - end - - it 'returns the data in format' do - expect(helper.admin_runners_data_attributes).to include( - runner_install_help_page: 'https://docs.gitlab.com/runner/install/', - registration_token: Gitlab::CurrentSettings.runners_registration_token, - online_contact_timeout_secs: 7200, - stale_timeout_secs: 7889238 - ) - end + it_behaves_like 'admin_runners_data_attributes contains data' end describe '#group_shared_runners_settings_data' do @@ -115,12 +102,19 @@ RSpec.describe Ci::RunnersHelper, feature_category: :runner_fleet do } end + before do + allow(helper).to receive(:can?).with(user, :admin_group, parent).and_return(true) + end + it 'returns group data for top level group' do result = { group_id: parent.id, group_name: parent.name, group_is_empty: 'false', shared_runners_setting: Namespace::SR_ENABLED, + + parent_name: nil, + parent_settings_path: nil, parent_shared_runners_setting: nil }.merge(runner_constants) @@ -133,7 +127,27 @@ RSpec.describe Ci::RunnersHelper, feature_category: :runner_fleet do group_name: group.name, group_is_empty: 'true', shared_runners_setting: Namespace::SR_DISABLED_AND_UNOVERRIDABLE, - parent_shared_runners_setting: Namespace::SR_ENABLED + + parent_shared_runners_setting: Namespace::SR_ENABLED, + parent_name: parent.name, + parent_settings_path: group_settings_ci_cd_path(group.parent, anchor: 'runners-settings') + }.merge(runner_constants) + + expect(helper.group_shared_runners_settings_data(group)).to eq result + end + + it 'returns groups data for child group with no access to parent' do + allow(helper).to receive(:can?).with(user, :admin_group, parent).and_return(false) + + result = { + group_id: group.id, + group_name: group.name, + group_is_empty: 'true', + shared_runners_setting: Namespace::SR_DISABLED_AND_UNOVERRIDABLE, + + parent_shared_runners_setting: Namespace::SR_ENABLED, + parent_name: nil, + parent_settings_path: nil }.merge(runner_constants) expect(helper.group_shared_runners_settings_data(group)).to eq result @@ -145,7 +159,10 @@ RSpec.describe Ci::RunnersHelper, feature_category: :runner_fleet do group_name: group_with_project.name, group_is_empty: 'false', shared_runners_setting: Namespace::SR_ENABLED, - parent_shared_runners_setting: Namespace::SR_ENABLED + + parent_shared_runners_setting: Namespace::SR_ENABLED, + parent_name: parent.name, + parent_settings_path: group_settings_ci_cd_path(group.parent, anchor: 'runners-settings') }.merge(runner_constants) expect(helper.group_shared_runners_settings_data(group_with_project)).to eq result @@ -190,8 +207,28 @@ RSpec.describe Ci::RunnersHelper, feature_category: :runner_fleet do context 'when project has runners' do it 'returns the correct value for is_enabled' do + allow(helper).to receive(:can?).with(user, :admin_group, group).and_return(false) + + data = helper.toggle_shared_runners_settings_data(project_with_runners) + + expect(data).to include( + is_enabled: 'true', + group_name: nil, + group_settings_path: nil + ) + end + end + + context 'when group can be configured by user' do + it 'returns values to configure group' do + allow(helper).to receive(:can?).with(user, :admin_group, group).and_return(true) + data = helper.toggle_shared_runners_settings_data(project_with_runners) - expect(data[:is_enabled]).to eq("true") + + expect(data).to include( + group_name: group.name, + group_settings_path: group_settings_ci_cd_path(group, anchor: 'runners-settings') + ) end end @@ -218,9 +255,9 @@ RSpec.describe Ci::RunnersHelper, feature_category: :runner_fleet do using RSpec::Parameterized::TableSyntax where(:shared_runners_setting, :is_disabled_and_unoverridable) do - :shared_runners_enabled | "false" - :disabled_and_overridable | "false" - :disabled_and_unoverridable | "true" + :shared_runners_enabled | "false" + :shared_runners_disabled_and_overridable | "false" + :shared_runners_disabled_and_unoverridable | "true" end with_them do |