Commit 4a1e8d60 authored by Bob Van Landuyt's avatar Bob Van Landuyt

Usage ping for projects enforcing code owner approval

parent bfc67bd0
......@@ -92,6 +92,8 @@ module EE
scope :verification_failed_repos, -> { joins(:repository_state).merge(ProjectRepositoryState.verification_failed_repos) }
scope :verification_failed_wikis, -> { joins(:repository_state).merge(ProjectRepositoryState.verification_failed_wikis) }
scope :for_plan_name, -> (name) { joins(namespace: :plan).where(plans: { name: name }) }
scope :requiring_code_owner_approval,
-> { where(merge_requests_require_code_owner_approval: true) }
delegate :shared_runners_minutes, :shared_runners_seconds, :shared_runners_seconds_last_reset,
to: :statistics, allow_nil: true
......
......@@ -117,7 +117,8 @@ module EE
projects_mirrored_with_pipelines_enabled: projects_mirrored_with_pipelines_enabled,
projects_with_prometheus_alerts: count(PrometheusAlert.distinct_projects),
projects_with_packages: count(::Packages::Package.select('distinct project_id')),
projects_with_tracing_enabled: count(ProjectTracingSetting)
projects_with_tracing_enabled: count(ProjectTracingSetting),
projects_enforcing_code_owner_approval: count(::Project.without_deleted.non_archived.requiring_code_owner_approval)
}).merge(service_desk_counts).merge(security_products_usage)
# MySql does not support recursive queries so we can't retrieve epics relationship depth
......
......@@ -55,5 +55,9 @@ FactoryBot.modify do
trait :random_last_repository_updated_at do
last_repository_updated_at { rand(1.year).seconds.ago }
end
trait :requiring_code_owner_approval do
merge_requests_require_code_owner_approval true
end
end
end
......@@ -192,4 +192,16 @@ describe Gitlab::UsageData do
end
end
end
describe 'code owner approval required' do
before do
create(:project, :archived, :requiring_code_owner_approval)
create(:project, :requiring_code_owner_approval, pending_delete: true)
create(:project, :requiring_code_owner_approval)
end
it 'counts the projects actively requiring code owner approval' do
expect(described_class.system_usage_data[:counts][:projects_enforcing_code_owner_approval]).to eq(1)
end
end
end
......@@ -32,6 +32,17 @@ describe Project do
it { is_expected.to have_many(:package_files).class_name('Packages::PackageFile') }
end
context 'scopes' do
describe '.requiring_code_owner_approval' do
it 'only includes the right projects' do
create(:project)
expected_project = create(:project, merge_requests_require_code_owner_approval: true)
expect(described_class.requiring_code_owner_approval).to contain_exactly(expected_project)
end
end
end
describe 'validations' do
let(:project) { build(:project) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment