diff --git a/doc/user/admin_area/settings/usage_statistics.md b/doc/user/admin_area/settings/usage_statistics.md index f9a45fadf6d55624d01428083c091f18ff15c15b..5a6856789347b45402cda40e0cb966ecdb3297eb 100644 --- a/doc/user/admin_area/settings/usage_statistics.md +++ b/doc/user/admin_area/settings/usage_statistics.md @@ -233,6 +233,7 @@ but commented out to help encourage others to add to it in the future. --> |protected_branches|counts|| |releases|counts|| |remote_mirrors|counts|| +|requirements_created|counts|| |snippets|counts|| |suggestions|counts|| |todos|counts|| diff --git a/ee/lib/ee/gitlab/usage_data.rb b/ee/lib/ee/gitlab/usage_data.rb index 30c19363b2a2d3a5e789cf8ee2f6d5b8823ccab0..f20a0629e114a579edeb91a7a9e6b43000bd2991 100644 --- a/ee/lib/ee/gitlab/usage_data.rb +++ b/ee/lib/ee/gitlab/usage_data.rb @@ -82,6 +82,14 @@ def license_usage_data usage_data end + def requirements_counts + return {} unless ::License.feature_available?(:requirements) + + { + requirements_created: count(RequirementsManagement::Requirement) + } + end + # rubocop: disable CodeReuse/ActiveRecord def service_desk_counts return {} unless ::License.feature_available?(:service_desk) @@ -160,6 +168,7 @@ def system_usage_data status_page_issues: count(::Issue.on_status_page), template_repositories: count(::Project.with_repos_templates) + count(::Project.with_groups_level_repos_templates) }, + requirements_counts, service_desk_counts, security_products_usage, epics_deepest_relationship_level, diff --git a/ee/spec/lib/ee/gitlab/usage_data_spec.rb b/ee/spec/lib/ee/gitlab/usage_data_spec.rb index d117821201d98882182e5d93f3775d4919580577..4c4a5c9706e14c881cb0259e137cdbc2919f664a 100644 --- a/ee/spec/lib/ee/gitlab/usage_data_spec.rb +++ b/ee/spec/lib/ee/gitlab/usage_data_spec.rb @@ -7,7 +7,7 @@ allow(ActiveRecord::Base.connection).to receive(:transaction_open?).and_return(false) end - describe '#data' do + describe '.data' do # using Array.new to create a different creator User for each of the projects let_it_be(:projects) { Array.new(3) { create(:project, :repository, creator: create(:user, group_view: :security_dashboard)) } } let(:count_data) { subject[:counts] } @@ -152,7 +152,7 @@ end end - describe '#features_usage_data_ee' do + describe '.features_usage_data_ee' do subject { described_class.features_usage_data_ee } it 'gathers feature usage data of EE' do @@ -162,7 +162,7 @@ end end - describe '#license_usage_data' do + describe '.license_usage_data' do subject { described_class.license_usage_data } it 'gathers license data' do @@ -180,6 +180,28 @@ end end + describe '.requirements_counts' do + subject { described_class.requirements_counts } + + context 'when requirements are disabled' do + it 'returns empty hash' do + stub_licensed_features(requirements: false) + + expect(subject).to eq({}) + end + end + + context 'when requirements are enabled' do + it 'returns created requirements count' do + stub_licensed_features(requirements: true) + + create_list(:requirement, 2) + + expect(subject).to eq({ requirements_created: 2 }) + end + end + end + describe '.service_desk_counts' do subject { described_class.service_desk_counts }