diff options
Diffstat (limited to 'spec/models/group_spec.rb')
-rw-r--r-- | spec/models/group_spec.rb | 42 |
1 files changed, 41 insertions, 1 deletions
diff --git a/spec/models/group_spec.rb b/spec/models/group_spec.rb index 3134f2ba248..0bf4540f535 100644 --- a/spec/models/group_spec.rb +++ b/spec/models/group_spec.rb @@ -969,6 +969,23 @@ RSpec.describe Group, feature_category: :subgroups do end end + describe '.with_project_creation_levels' do + let_it_be(:group_1) { create(:group, project_creation_level: Gitlab::Access::NO_ONE_PROJECT_ACCESS) } + let_it_be(:group_2) { create(:group, project_creation_level: Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS) } + let_it_be(:group_3) { create(:group, project_creation_level: Gitlab::Access::MAINTAINER_PROJECT_ACCESS) } + let_it_be(:group_4) { create(:group, project_creation_level: nil) } + + it 'returns groups with the specified project creation levels' do + result = described_class.with_project_creation_levels([ + Gitlab::Access::NO_ONE_PROJECT_ACCESS, + Gitlab::Access::MAINTAINER_PROJECT_ACCESS + ]) + + expect(result).to include(group_1, group_3) + expect(result).not_to include(group_2, group_4) + end + end + describe '.project_creation_allowed' do let_it_be(:group_1) { create(:group, project_creation_level: Gitlab::Access::NO_ONE_PROJECT_ACCESS) } let_it_be(:group_2) { create(:group, project_creation_level: Gitlab::Access::DEVELOPER_MAINTAINER_PROJECT_ACCESS) } @@ -981,6 +998,22 @@ RSpec.describe Group, feature_category: :subgroups do expect(result).to include(group_2, group_3, group_4) expect(result).not_to include(group_1) end + + context 'when the application_setting is set to `NO_ONE_PROJECT_ACCESS`' do + before do + stub_application_setting(default_project_creation: Gitlab::Access::NO_ONE_PROJECT_ACCESS) + end + + it 'only includes groups where project creation is allowed' do + result = described_class.project_creation_allowed + + expect(result).to include(group_2, group_3) + + # group_4 won't be included because it has `project_creation_level: nil`, + # and that means it behaves like the value of the application_setting will inherited. + expect(result).not_to include(group_1, group_4) + end + end end describe 'by_ids_or_paths' do @@ -3598,6 +3631,13 @@ RSpec.describe Group, feature_category: :subgroups do end end + describe '#content_editor_on_issues_feature_flag_enabled?' do + it_behaves_like 'checks self and root ancestor feature flag' do + let(:feature_flag) { :content_editor_on_issues } + let(:feature_flag_method) { :content_editor_on_issues_feature_flag_enabled? } + end + end + describe '#work_items_feature_flag_enabled?' do it_behaves_like 'checks self and root ancestor feature flag' do let(:feature_flag) { :work_items } @@ -3710,7 +3750,7 @@ RSpec.describe Group, feature_category: :subgroups do end end - describe '#usage_quotas_enabled?', feature_category: :subscription_cost_management, unless: Gitlab.ee? do + describe '#usage_quotas_enabled?', feature_category: :consumables_cost_management, unless: Gitlab.ee? do using RSpec::Parameterized::TableSyntax where(:feature_enabled, :root_group, :result) do |