diff options
Diffstat (limited to 'spec/lib/gitlab/ci/reports/codequality_reports_spec.rb')
-rw-r--r-- | spec/lib/gitlab/ci/reports/codequality_reports_spec.rb | 115 |
1 files changed, 72 insertions, 43 deletions
diff --git a/spec/lib/gitlab/ci/reports/codequality_reports_spec.rb b/spec/lib/gitlab/ci/reports/codequality_reports_spec.rb index 68e70525c55..93644aa1497 100644 --- a/spec/lib/gitlab/ci/reports/codequality_reports_spec.rb +++ b/spec/lib/gitlab/ci/reports/codequality_reports_spec.rb @@ -4,19 +4,25 @@ require 'spec_helper' RSpec.describe Gitlab::Ci::Reports::CodequalityReports do let(:codequality_report) { described_class.new } - let(:degradation_1) { build(:codequality_degradation_1) } - let(:degradation_2) { build(:codequality_degradation_2) } + let(:degradation_major) { build(:codequality_degradation, :major) } + let(:degradation_minor) { build(:codequality_degradation, :minor) } + let(:degradation_blocker) { build(:codequality_degradation, :blocker) } + let(:degradation_info) { build(:codequality_degradation, :info) } + let(:degradation_major_2) { build(:codequality_degradation, :major) } + let(:degradation_critical) { build(:codequality_degradation, :critical) } + let(:degradation_uppercase_major) { build(:codequality_degradation, severity: 'MAJOR') } + let(:degradation_unknown) { build(:codequality_degradation, severity: 'unknown') } it { expect(codequality_report.degradations).to eq({}) } describe '#add_degradation' do context 'when there is a degradation' do before do - codequality_report.add_degradation(degradation_1) + codequality_report.add_degradation(degradation_major) end it 'adds degradation to codequality report' do - expect(codequality_report.degradations.keys).to eq([degradation_1[:fingerprint]]) + expect(codequality_report.degradations.keys).to match_array([degradation_major[:fingerprint]]) expect(codequality_report.degradations.values.size).to eq(1) end end @@ -53,8 +59,8 @@ RSpec.describe Gitlab::Ci::Reports::CodequalityReports do context 'when there are many degradations' do before do - codequality_report.add_degradation(degradation_1) - codequality_report.add_degradation(degradation_2) + codequality_report.add_degradation(degradation_major) + codequality_report.add_degradation(degradation_minor) end it 'returns the number of degradations' do @@ -68,36 +74,25 @@ RSpec.describe Gitlab::Ci::Reports::CodequalityReports do context 'when there are many degradations' do before do - codequality_report.add_degradation(degradation_1) - codequality_report.add_degradation(degradation_2) + codequality_report.add_degradation(degradation_major) + codequality_report.add_degradation(degradation_minor) end it 'returns all degradations' do - expect(all_degradations).to contain_exactly(degradation_1, degradation_2) + expect(all_degradations).to contain_exactly(degradation_major, degradation_minor) end end end describe '#sort_degradations!' do - let(:major) { build(:codequality_degradation, :major) } - let(:minor) { build(:codequality_degradation, :minor) } - let(:blocker) { build(:codequality_degradation, :blocker) } - let(:info) { build(:codequality_degradation, :info) } - let(:major_2) { build(:codequality_degradation, :major) } - let(:critical) { build(:codequality_degradation, :critical) } - let(:uppercase_major) { build(:codequality_degradation, severity: 'MAJOR') } - let(:unknown) { build(:codequality_degradation, severity: 'unknown') } - - let(:codequality_report) { described_class.new } - before do - codequality_report.add_degradation(major) - codequality_report.add_degradation(minor) - codequality_report.add_degradation(blocker) - codequality_report.add_degradation(major_2) - codequality_report.add_degradation(info) - codequality_report.add_degradation(critical) - codequality_report.add_degradation(unknown) + codequality_report.add_degradation(degradation_major) + codequality_report.add_degradation(degradation_minor) + codequality_report.add_degradation(degradation_blocker) + codequality_report.add_degradation(degradation_major_2) + codequality_report.add_degradation(degradation_info) + codequality_report.add_degradation(degradation_critical) + codequality_report.add_degradation(degradation_unknown) codequality_report.sort_degradations! end @@ -105,36 +100,70 @@ RSpec.describe Gitlab::Ci::Reports::CodequalityReports do it 'sorts degradations based on severity' do expect(codequality_report.degradations.values).to eq( [ - blocker, - critical, - major, - major_2, - minor, - info, - unknown + degradation_blocker, + degradation_critical, + degradation_major, + degradation_major_2, + degradation_minor, + degradation_info, + degradation_unknown ]) end context 'with non-existence and uppercase severities' do let(:other_report) { described_class.new } - let(:non_existent) { build(:codequality_degradation, severity: 'non-existent') } + let(:degradation_non_existent) { build(:codequality_degradation, severity: 'non-existent') } before do - other_report.add_degradation(blocker) - other_report.add_degradation(uppercase_major) - other_report.add_degradation(minor) - other_report.add_degradation(non_existent) + other_report.add_degradation(degradation_blocker) + other_report.add_degradation(degradation_uppercase_major) + other_report.add_degradation(degradation_minor) + other_report.add_degradation(degradation_non_existent) end it 'sorts unknown last' do expect(other_report.degradations.values).to eq( [ - blocker, - uppercase_major, - minor, - non_existent + degradation_blocker, + degradation_uppercase_major, + degradation_minor, + degradation_non_existent ]) end end end + + describe '#code_quality_report_summary' do + context "when there is no degradation" do + it 'return nil' do + expect(codequality_report.code_quality_report_summary).to eq(nil) + end + end + + context "when there are degradations" do + before do + codequality_report.add_degradation(degradation_major) + codequality_report.add_degradation(degradation_major_2) + codequality_report.add_degradation(degradation_minor) + codequality_report.add_degradation(degradation_blocker) + codequality_report.add_degradation(degradation_info) + codequality_report.add_degradation(degradation_critical) + codequality_report.add_degradation(degradation_unknown) + end + + it 'returns the summary of the code quality report' do + expect(codequality_report.code_quality_report_summary).to eq( + { + 'major' => 2, + 'minor' => 1, + 'blocker' => 1, + 'info' => 1, + 'critical' => 1, + 'unknown' => 1, + 'count' => 7 + } + ) + end + end + end end |