diff options
Diffstat (limited to 'spec/models/ci/pipeline_spec.rb')
-rw-r--r-- | spec/models/ci/pipeline_spec.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 1ca370dc950..5a29e7b5c6c 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -498,6 +498,16 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do end end + context 'when pipeline has a codequality report' do + subject { described_class.with_reports(Ci::JobArtifact.codequality_reports) } + + let(:pipeline_with_report) { create(:ci_pipeline, :with_codequality_reports) } + + it 'selects the pipeline' do + is_expected.to eq([pipeline_with_report]) + end + end + context 'when pipeline has a terraform report' do it 'selects the pipeline' do pipeline_with_report = create(:ci_pipeline, :with_terraform_reports) @@ -3360,6 +3370,39 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do end end + describe '#codequality_reports' do + subject(:codequality_reports) { pipeline.codequality_reports } + + context 'when pipeline has multiple builds with codequality reports' do + let(:build_rspec) { create(:ci_build, :success, name: 'rspec', pipeline: pipeline, project: project) } + let(:build_golang) { create(:ci_build, :success, name: 'golang', pipeline: pipeline, project: project) } + + before do + create(:ci_job_artifact, :codequality, job: build_rspec, project: project) + create(:ci_job_artifact, :codequality_without_errors, job: build_golang, project: project) + end + + it 'returns codequality report with collected data' do + expect(codequality_reports.degradations_count).to eq(3) + end + + context 'when builds are retried' do + let(:build_rspec) { create(:ci_build, :retried, :success, name: 'rspec', pipeline: pipeline, project: project) } + let(:build_golang) { create(:ci_build, :retried, :success, name: 'golang', pipeline: pipeline, project: project) } + + it 'returns a codequality reports without degradations' do + expect(codequality_reports.degradations).to be_empty + end + end + end + + context 'when pipeline does not have any builds with codequality reports' do + it 'returns codequality reports without degradations' do + expect(codequality_reports.degradations).to be_empty + end + end + end + describe '#total_size' do let!(:build_job1) { create(:ci_build, pipeline: pipeline, stage_idx: 0) } let!(:build_job2) { create(:ci_build, pipeline: pipeline, stage_idx: 0) } |