From a6f698cfadaa739cf8bba88bb464d34aca70c4f0 Mon Sep 17 00:00:00 2001 From: Sheldon Led <sheldonled@gitlab.com> Date: Fri, 12 May 2023 18:01:53 +0000 Subject: [PATCH] Separate EE from SaaS data properly on pipeline_usage_app_data --- .../rspec/missing_feature_category.yml | 2 -- .../usage_quotas/pipelines/components/app.vue | 1 + ee/app/helpers/ee/namespaces_helper.rb | 33 +++++++++++-------- ee/spec/helpers/ee/namespaces_helper_spec.rb | 18 +++++++--- spec/helpers/namespaces_helper_spec.rb | 4 +-- 5 files changed, 36 insertions(+), 22 deletions(-) diff --git a/.rubocop_todo/rspec/missing_feature_category.yml b/.rubocop_todo/rspec/missing_feature_category.yml index 1c887978de82b..7e1dc4b4cf936 100644 --- a/.rubocop_todo/rspec/missing_feature_category.yml +++ b/.rubocop_todo/rspec/missing_feature_category.yml @@ -495,7 +495,6 @@ RSpec/MissingFeatureCategory: - 'ee/spec/helpers/ee/labels_helper_spec.rb' - 'ee/spec/helpers/ee/lock_helper_spec.rb' - 'ee/spec/helpers/ee/namespace_user_cap_reached_alert_helper_spec.rb' - - 'ee/spec/helpers/ee/namespaces_helper_spec.rb' - 'ee/spec/helpers/ee/operations_helper_spec.rb' - 'ee/spec/helpers/ee/personal_access_tokens_helper_spec.rb' - 'ee/spec/helpers/ee/profiles_helper_spec.rb' @@ -2625,7 +2624,6 @@ RSpec/MissingFeatureCategory: - 'spec/helpers/markup_helper_spec.rb' - 'spec/helpers/members_helper_spec.rb' - 'spec/helpers/milestones_helper_spec.rb' - - 'spec/helpers/namespaces_helper_spec.rb' - 'spec/helpers/nav/top_nav_helper_spec.rb' - 'spec/helpers/notifications_helper_spec.rb' - 'spec/helpers/notify_helper_spec.rb' diff --git a/ee/app/assets/javascripts/usage_quotas/pipelines/components/app.vue b/ee/app/assets/javascripts/usage_quotas/pipelines/components/app.vue index 8658e66906e15..b53bcecb9984c 100644 --- a/ee/app/assets/javascripts/usage_quotas/pipelines/components/app.vue +++ b/ee/app/assets/javascripts/usage_quotas/pipelines/components/app.vue @@ -182,6 +182,7 @@ export default { </gl-button> </div> <usage-overview + :class="{ 'gl-pt-5': !shouldShowBuyAdditionalMinutes }" :minutes-title="monthlyUsageTitle" :minutes-used="monthlyMinutesUsed" minutes-used-qa-selector="plan_ci_minutes" diff --git a/ee/app/helpers/ee/namespaces_helper.rb b/ee/app/helpers/ee/namespaces_helper.rb index 60157735fb0d0..290327ab9c654 100644 --- a/ee/app/helpers/ee/namespaces_helper.rb +++ b/ee/app/helpers/ee/namespaces_helper.rb @@ -34,23 +34,30 @@ def buy_storage_url(namespace) override :pipeline_usage_app_data def pipeline_usage_app_data(namespace) - return super unless ::Gitlab::CurrentSettings.should_check_namespace_plan? - minutes_usage = namespace.ci_minutes_usage minutes_usage_presenter = ::Ci::Minutes::UsagePresenter.new(minutes_usage) + # EE data + ci_minutes = { + any_project_enabled: minutes_usage_presenter.any_project_enabled?.to_s, + last_reset_date: minutes_usage.reset_date, + display_minutes_available_data: minutes_usage_presenter.display_minutes_available_data?.to_s, + monthly_minutes_used: minutes_usage_presenter.monthly_minutes_report.used, + monthly_minutes_used_percentage: minutes_usage_presenter.monthly_percent_used, + monthly_minutes_limit: minutes_usage_presenter.monthly_minutes_report.limit + } + + return super.merge(ci_minutes: ci_minutes) unless ::Gitlab::CurrentSettings.should_check_namespace_plan? + + # SaaS data + ci_minutes.merge!({ + purchased_minutes_used: minutes_usage_presenter.purchased_minutes_report.used, + purchased_minutes_used_percentage: minutes_usage_presenter.purchased_percent_used, + purchased_minutes_limit: minutes_usage_presenter.purchased_minutes_report.limit + }) + super.merge( - ci_minutes: { - any_project_enabled: minutes_usage_presenter.any_project_enabled?.to_s, - last_reset_date: minutes_usage.reset_date, - display_minutes_available_data: minutes_usage_presenter.display_minutes_available_data?.to_s, - monthly_minutes_used: minutes_usage_presenter.monthly_minutes_report.used, - monthly_minutes_used_percentage: minutes_usage_presenter.monthly_percent_used, - monthly_minutes_limit: minutes_usage_presenter.monthly_minutes_report.limit, - purchased_minutes_used: minutes_usage_presenter.purchased_minutes_report.used, - purchased_minutes_used_percentage: minutes_usage_presenter.purchased_percent_used, - purchased_minutes_limit: minutes_usage_presenter.purchased_minutes_report.limit - }, + ci_minutes: ci_minutes, buy_additional_minutes_path: buy_additional_minutes_path(namespace), buy_additional_minutes_target: buy_addon_target_attr(namespace) ) diff --git a/ee/spec/helpers/ee/namespaces_helper_spec.rb b/ee/spec/helpers/ee/namespaces_helper_spec.rb index b38af6df5f912..72f6226e29754 100644 --- a/ee/spec/helpers/ee/namespaces_helper_spec.rb +++ b/ee/spec/helpers/ee/namespaces_helper_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true require 'spec_helper' -RSpec.describe EE::NamespacesHelper do +RSpec.describe EE::NamespacesHelper, feature_category: :subgroups do using RSpec::Parameterized::TableSyntax include NamespacesTestHelper @@ -200,10 +200,10 @@ end describe '#pipeline_usage_app_data', feature_category: :consumables_cost_management do - context 'when gitlab sass', :saas do - let(:minutes_usage) { user_group.ci_minutes_usage } - let(:minutes_usage_presenter) { ::Ci::Minutes::UsagePresenter.new(minutes_usage) } + let(:minutes_usage) { user_group.ci_minutes_usage } + let(:minutes_usage_presenter) { ::Ci::Minutes::UsagePresenter.new(minutes_usage) } + context 'when gitlab sass', :saas do before do allow(Gitlab).to receive(:com?).and_return(true) stub_ee_application_setting(should_check_namespace_plan: true) @@ -246,7 +246,15 @@ namespace_path: user_group.full_path, namespace_id: user_group.id, user_namespace: user_group.user_namespace?.to_s, - page_size: Kaminari.config.default_per_page + page_size: Kaminari.config.default_per_page, + ci_minutes: { + any_project_enabled: minutes_usage_presenter.any_project_enabled?.to_s, + last_reset_date: minutes_usage.reset_date, + display_minutes_available_data: minutes_usage_presenter.display_minutes_available_data?.to_s, + monthly_minutes_used: minutes_usage_presenter.monthly_minutes_report.used, + monthly_minutes_used_percentage: minutes_usage_presenter.monthly_percent_used, + monthly_minutes_limit: minutes_usage_presenter.monthly_minutes_report.limit + } }) end end diff --git a/spec/helpers/namespaces_helper_spec.rb b/spec/helpers/namespaces_helper_spec.rb index e288a604be674..e7c8e40da7f5a 100644 --- a/spec/helpers/namespaces_helper_spec.rb +++ b/spec/helpers/namespaces_helper_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -RSpec.describe NamespacesHelper do +RSpec.describe NamespacesHelper, feature_category: :subgroups do let!(:admin) { create(:admin) } let!(:admin_project_creation_level) { nil } let!(:admin_group) do @@ -121,7 +121,7 @@ end end - describe '#pipeline_usage_app_data' do + describe '#pipeline_usage_app_data', unless: Gitlab.ee?, feature_category: :consumables_cost_management do it 'returns a hash with necessary data for the frontend' do expect(helper.pipeline_usage_app_data(user_group)).to eql({ namespace_actual_plan_name: user_group.actual_plan_name, -- GitLab