From cb0e8e282e1e8a4e594596971f742b41b866a8a5 Mon Sep 17 00:00:00 2001 From: Tetiana Chupryna <tchupryna@gitlab.com> Date: Wed, 22 Jun 2022 19:10:32 +0200 Subject: [PATCH] Add denied licenses bool to widget info Issue: https://gitlab.com/gitlab-org/gitlab/-/issues/362635 Update test with new field Momoize method reused method --- .../collapsed_comparer_entity.rb | 4 ++ ...ense_scanning_reports_collapsed_service.rb | 15 ++++--- .../collapsed_comparer_entity_spec.rb | 3 +- ...scanning_reports_collapsed_service_spec.rb | 41 ++++++++++--------- 4 files changed, 38 insertions(+), 25 deletions(-) diff --git a/ee/app/serializers/license_compliance/collapsed_comparer_entity.rb b/ee/app/serializers/license_compliance/collapsed_comparer_entity.rb index 9c642be0762d0..d2bceb3131732 100644 --- a/ee/app/serializers/license_compliance/collapsed_comparer_entity.rb +++ b/ee/app/serializers/license_compliance/collapsed_comparer_entity.rb @@ -18,5 +18,9 @@ class CollapsedComparerEntity < Grape::Entity expose :approval_required do |_| request.approval_required end + + expose :has_denied_licenses do |_| + request.has_denied_licenses + end end end diff --git a/ee/app/services/ci/compare_license_scanning_reports_collapsed_service.rb b/ee/app/services/ci/compare_license_scanning_reports_collapsed_service.rb index 0438771c00fa4..07133da723b8f 100644 --- a/ee/app/services/ci/compare_license_scanning_reports_collapsed_service.rb +++ b/ee/app/services/ci/compare_license_scanning_reports_collapsed_service.rb @@ -2,6 +2,8 @@ module Ci class CompareLicenseScanningReportsCollapsedService < ::Ci::CompareLicenseScanningReportsService + include ::Gitlab::Utils::StrongMemoize + def serializer_class ::LicenseCompliance::CollapsedComparerSerializer end @@ -19,12 +21,14 @@ def approval_required end def has_denied_licenses? - licenses = comparer_entity.new_licenses + strong_memoize(:has_denied_licenses) do + licenses = comparer_entity.new_licenses - return false if licenses.nil? || licenses.empty? + next false if licenses.nil? || licenses.empty? - licenses.any? do |l| - 'denied' == l.approval_status + licenses.any? do |l| + 'denied' == l.approval_status + end end end @@ -32,7 +36,8 @@ def serializer_params { project: project, current_user: current_user, - approval_required: approval_required + approval_required: approval_required, + has_denied_licenses: has_denied_licenses? } end end diff --git a/ee/spec/serializers/license_compliance/collapsed_comparer_entity_spec.rb b/ee/spec/serializers/license_compliance/collapsed_comparer_entity_spec.rb index 36b2fd5be12ba..5d330bc43497e 100644 --- a/ee/spec/serializers/license_compliance/collapsed_comparer_entity_spec.rb +++ b/ee/spec/serializers/license_compliance/collapsed_comparer_entity_spec.rb @@ -22,7 +22,7 @@ create(:ci_pipeline, :success, project: project, builds: [create(:ee_ci_build, :success)]) end - let(:request) { EntityRequest.new(approval_required: false) } + let(:request) { EntityRequest.new(approval_required: false, has_denied_licenses: false) } describe '#as_json' do subject { entity.as_json } @@ -32,6 +32,7 @@ expect(subject).to have_key(:existing_licenses) expect(subject).to have_key(:removed_licenses) expect(subject).to have_key(:approval_required) + expect(subject).to have_key(:has_denied_licenses) end end end diff --git a/ee/spec/services/ci/compare_license_scanning_reports_collapsed_service_spec.rb b/ee/spec/services/ci/compare_license_scanning_reports_collapsed_service_spec.rb index a0bd7d772f99b..482e6597fc9fe 100644 --- a/ee/spec/services/ci/compare_license_scanning_reports_collapsed_service_spec.rb +++ b/ee/spec/services/ci/compare_license_scanning_reports_collapsed_service_spec.rb @@ -29,33 +29,36 @@ let_it_be(:base_pipeline) { create(:ee_ci_pipeline, :with_license_scanning_report, project: project) } let_it_be(:head_pipeline) { create(:ee_ci_pipeline, :with_license_scanning_feature_branch, project: project) } - it 'exposes report with numbers of licenses by type' do - expect(subject[:status]).to eq(:parsed) - expect(subject[:data]['new_licenses']).to eq(1) - expect(subject[:data]['existing_licenses']).to eq(1) - expect(subject[:data]['removed_licenses']).to eq(3) - expect(subject[:data]['approval_required']).to eq(false) - end + context 'with denied licenses' do + before do + allow_next_instance_of(::SCA::LicensePolicy) do |license| + allow(license).to receive(:approval_status).and_return('denied') + end + end - context 'when license_check enabled' do - let(:license_check) { true } + it 'exposes report with numbers of licenses by type' do + expect(subject[:status]).to eq(:parsed) + expect(subject[:data]['new_licenses']).to eq(1) + expect(subject[:data]['existing_licenses']).to eq(1) + expect(subject[:data]['removed_licenses']).to eq(3) + expect(subject[:data]['approval_required']).to eq(false) + expect(subject[:data]['has_denied_licenses']).to eq(true) + end - context 'with denied licenses' do - before do - allow_next_instance_of(::SCA::LicensePolicy) do |license| - allow(license).to receive(:approval_status).and_return('denied') - end - end + context 'when license_check enabled' do + let(:license_check) { true } it 'exposes approval as required' do expect(subject[:data]['approval_required']).to eq(true) + expect(subject[:data]['has_denied_licenses']).to eq(true) end end + end - context 'without denied licenses' do - it 'exposes approval as not required' do - expect(subject[:data]['approval_required']).to eq(false) - end + context 'without denied licenses' do + it 'exposes approval as not required' do + expect(subject[:data]['approval_required']).to eq(false) + expect(subject[:data]['has_denied_licenses']).to eq(false) end end end -- GitLab