summaryrefslogtreecommitdiff
path: root/spec/lib/gitlab/ci/reports/codequality_reports_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/gitlab/ci/reports/codequality_reports_spec.rb')
-rw-r--r--spec/lib/gitlab/ci/reports/codequality_reports_spec.rb115
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