diff options
Diffstat (limited to 'spec/models/ci')
-rw-r--r-- | spec/models/ci/bridge_spec.rb | 8 | ||||
-rw-r--r-- | spec/models/ci/build_dependencies_spec.rb | 28 | ||||
-rw-r--r-- | spec/models/ci/build_spec.rb | 80 | ||||
-rw-r--r-- | spec/models/ci/build_trace_chunk_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/ci/build_trace_chunks/fog_spec.rb | 21 | ||||
-rw-r--r-- | spec/models/ci/daily_build_group_report_result_spec.rb | 43 | ||||
-rw-r--r-- | spec/models/ci/pipeline_artifact_spec.rb | 114 | ||||
-rw-r--r-- | spec/models/ci/pipeline_spec.rb | 107 | ||||
-rw-r--r-- | spec/models/ci/processable_spec.rb | 54 | ||||
-rw-r--r-- | spec/models/ci/resource_group_spec.rb | 12 | ||||
-rw-r--r-- | spec/models/ci/resource_spec.rb | 2 | ||||
-rw-r--r-- | spec/models/ci/stage_spec.rb | 3 |
12 files changed, 320 insertions, 154 deletions
diff --git a/spec/models/ci/bridge_spec.rb b/spec/models/ci/bridge_spec.rb index 4f09f6f1da4..b50e4204e0a 100644 --- a/spec/models/ci/bridge_spec.rb +++ b/spec/models/ci/bridge_spec.rb @@ -80,6 +80,14 @@ RSpec.describe Ci::Bridge do end end + it "schedules downstream pipeline creation when the status is waiting for resource" do + bridge.status = :waiting_for_resource + + expect(bridge).to receive(:schedule_downstream_pipeline!) + + bridge.enqueue_waiting_for_resource! + end + it 'raises error when the status is failed' do bridge.status = :failed diff --git a/spec/models/ci/build_dependencies_spec.rb b/spec/models/ci/build_dependencies_spec.rb index c5f56dbe5bc..e343ec0e698 100644 --- a/spec/models/ci/build_dependencies_spec.rb +++ b/spec/models/ci/build_dependencies_spec.rb @@ -18,6 +18,10 @@ RSpec.describe Ci::BuildDependencies do let!(:rubocop_test) { create(:ci_build, pipeline: pipeline, name: 'rubocop', stage_idx: 1, stage: 'test') } let!(:staging) { create(:ci_build, pipeline: pipeline, name: 'staging', stage_idx: 2, stage: 'deploy') } + before do + stub_feature_flags(ci_validate_build_dependencies_override: false) + end + describe '#local' do subject { described_class.new(job).local } @@ -360,4 +364,28 @@ RSpec.describe Ci::BuildDependencies do expect(subject).to contain_exactly(1, 2, 3, 4) end end + + describe '#valid?' do + subject { described_class.new(job).valid? } + + let(:job) { rspec_test } + + it { is_expected.to eq(true) } + + context 'when a local dependency is invalid' do + before do + build.update_column(:erased_at, Time.current) + end + + it { is_expected.to eq(false) } + + context 'when ci_validate_build_dependencies_override feature flag is enabled' do + before do + stub_feature_flags(ci_validate_build_dependencies_override: job.project) + end + + it { is_expected.to eq(true) } + end + end + end end diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index c2029b9240b..4ad7ce70a44 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -1185,60 +1185,6 @@ RSpec.describe Ci::Build do end end - describe 'state transition with resource group' do - let(:resource_group) { create(:ci_resource_group, project: project) } - - context 'when build status is created' do - let(:build) { create(:ci_build, :created, project: project, resource_group: resource_group) } - - it 'is waiting for resource when build is enqueued' do - expect(Ci::ResourceGroups::AssignResourceFromResourceGroupWorker).to receive(:perform_async).with(resource_group.id) - - expect { build.enqueue! }.to change { build.status }.from('created').to('waiting_for_resource') - - expect(build.waiting_for_resource_at).not_to be_nil - end - - context 'when build is waiting for resource' do - before do - build.update_column(:status, 'waiting_for_resource') - end - - it 'is enqueued when build requests resource' do - expect { build.enqueue_waiting_for_resource! }.to change { build.status }.from('waiting_for_resource').to('pending') - end - - it 'releases a resource when build finished' do - expect(build.resource_group).to receive(:release_resource_from).with(build).and_call_original - expect(Ci::ResourceGroups::AssignResourceFromResourceGroupWorker).to receive(:perform_async).with(build.resource_group_id) - - build.enqueue_waiting_for_resource! - build.success! - end - - context 'when build has prerequisites' do - before do - allow(build).to receive(:any_unmet_prerequisites?) { true } - end - - it 'is preparing when build is enqueued' do - expect { build.enqueue_waiting_for_resource! }.to change { build.status }.from('waiting_for_resource').to('preparing') - end - end - - context 'when there are no available resources' do - before do - resource_group.assign_resource_to(create(:ci_build)) - end - - it 'stays as waiting for resource when build requests resource' do - expect { build.enqueue_waiting_for_resource }.not_to change { build.status } - end - end - end - end - end - describe '#on_stop' do subject { build.on_stop } @@ -1914,7 +1860,7 @@ RSpec.describe Ci::Build do subject { build.artifacts_file_for_type(file_type) } it 'queries artifacts for type' do - expect(build).to receive_message_chain(:job_artifacts, :find_by).with(file_type: Ci::JobArtifact.file_types[file_type]) + expect(build).to receive_message_chain(:job_artifacts, :find_by).with(file_type: [Ci::JobArtifact.file_types[file_type]]) subject end @@ -3605,7 +3551,7 @@ RSpec.describe Ci::Build do context 'when validates for dependencies is enabled' do before do - stub_feature_flags(ci_disable_validates_dependencies: false) + stub_feature_flags(ci_validate_build_dependencies_override: false) end let!(:pre_stage_job) { create(:ci_build, :success, pipeline: pipeline, name: 'test', stage_idx: 0) } @@ -3633,7 +3579,7 @@ RSpec.describe Ci::Build do let(:options) { { dependencies: ['test'] } } before do - stub_feature_flags(ci_disable_validates_dependencies: true) + stub_feature_flags(ci_validate_build_dependencies_override: true) end it_behaves_like 'validation is not active' @@ -4096,18 +4042,6 @@ RSpec.describe Ci::Build do expect(coverage_report.files.keys).to match_array(['src/main/java/com/example/javademo/User.java']) end - - context 'and smart_cobertura_parser feature flag is disabled' do - before do - stub_feature_flags(smart_cobertura_parser: false) - end - - it 'parses blobs and add the results to the coverage report with unmodified paths' do - expect { subject }.not_to raise_error - - expect(coverage_report.files.keys).to match_array(['com/example/javademo/User.java']) - end - end end context 'when there is a corrupted Cobertura coverage report' do @@ -4922,14 +4856,6 @@ RSpec.describe Ci::Build do it_behaves_like 'drops the build without changing allow_failure' end - - context 'when ci_allow_failure_with_exit_codes is disabled' do - before do - stub_feature_flags(ci_allow_failure_with_exit_codes: false) - end - - it_behaves_like 'drops the build without changing allow_failure' - end end end diff --git a/spec/models/ci/build_trace_chunk_spec.rb b/spec/models/ci/build_trace_chunk_spec.rb index 75ed5939724..3d728b9335e 100644 --- a/spec/models/ci/build_trace_chunk_spec.rb +++ b/spec/models/ci/build_trace_chunk_spec.rb @@ -17,7 +17,7 @@ RSpec.describe Ci::BuildTraceChunk, :clean_gitlab_redis_shared_state do it_behaves_like 'having unique enum values' before do - stub_feature_flags(ci_enable_live_trace: true) + stub_feature_flags(ci_enable_live_trace: true, gitlab_ci_trace_read_consistency: true) stub_artifacts_object_storage end diff --git a/spec/models/ci/build_trace_chunks/fog_spec.rb b/spec/models/ci/build_trace_chunks/fog_spec.rb index bc96e2584cf..d9e9533fb26 100644 --- a/spec/models/ci/build_trace_chunks/fog_spec.rb +++ b/spec/models/ci/build_trace_chunks/fog_spec.rb @@ -98,27 +98,6 @@ RSpec.describe Ci::BuildTraceChunks::Fog do expect(data_store.data(model)).to eq new_data end - - context 'when ci_live_trace_use_fog_attributes flag is disabled' do - before do - stub_feature_flags(ci_live_trace_use_fog_attributes: false) - end - - it 'does not pass along Fog attributes' do - expect_next_instance_of(Fog::AWS::Storage::Files) do |files| - expect(files).to receive(:create).with( - key: anything, - body: new_data - ).and_call_original - end - - expect(data_store.data(model)).to be_nil - - data_store.set_data(model, new_data) - - expect(data_store.data(model)).to eq new_data - end - end end end end diff --git a/spec/models/ci/daily_build_group_report_result_spec.rb b/spec/models/ci/daily_build_group_report_result_spec.rb index f16396d62c9..f6e6a6a5e02 100644 --- a/spec/models/ci/daily_build_group_report_result_spec.rb +++ b/spec/models/ci/daily_build_group_report_result_spec.rb @@ -8,6 +8,7 @@ RSpec.describe Ci::DailyBuildGroupReportResult do describe 'associations' do it { is_expected.to belong_to(:last_pipeline) } it { is_expected.to belong_to(:project) } + it { is_expected.to belong_to(:group) } end describe 'validations' do @@ -83,8 +84,9 @@ RSpec.describe Ci::DailyBuildGroupReportResult do end describe 'scopes' do - let_it_be(:project) { create(:project) } - let(:recent_build_group_report_result) { create(:ci_daily_build_group_report_result, project: project) } + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, group: group) } + let(:recent_build_group_report_result) { create(:ci_daily_build_group_report_result, project: project, group: group) } let(:old_build_group_report_result) do create(:ci_daily_build_group_report_result, date: 1.week.ago, project: project) end @@ -97,6 +99,43 @@ RSpec.describe Ci::DailyBuildGroupReportResult do end end + describe '.by_group' do + subject { described_class.by_group(group) } + + it 'returns records by group' do + expect(subject).to contain_exactly(recent_build_group_report_result) + end + end + + describe '.by_ref_path' do + subject(:coverages) { described_class.by_ref_path(recent_build_group_report_result.ref_path) } + + it 'returns coverages by ref_path' do + expect(coverages).to contain_exactly(recent_build_group_report_result, old_build_group_report_result) + end + end + + describe '.ordered_by_date_and_group_name' do + subject(:coverages) { described_class.ordered_by_date_and_group_name } + + it 'returns coverages ordered by data and group name' do + expect(subject).to contain_exactly(recent_build_group_report_result, old_build_group_report_result) + end + end + + describe '.by_dates' do + subject(:coverages) { described_class.by_dates(start_date, end_date) } + + context 'when daily coverages exist during those dates' do + let(:start_date) { 1.day.ago.to_date.to_s } + let(:end_date) { Date.current.to_s } + + it 'returns coverages' do + expect(coverages).to contain_exactly(recent_build_group_report_result) + end + end + end + describe '.with_coverage' do subject { described_class.with_coverage } diff --git a/spec/models/ci/pipeline_artifact_spec.rb b/spec/models/ci/pipeline_artifact_spec.rb index 8cbace845a9..3fe09f05cab 100644 --- a/spec/models/ci/pipeline_artifact_spec.rb +++ b/spec/models/ci/pipeline_artifact_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' RSpec.describe Ci::PipelineArtifact, type: :model do - let(:coverage_report) { create(:ci_pipeline_artifact) } + let(:coverage_report) { create(:ci_pipeline_artifact, :with_coverage_report) } describe 'associations' do it { is_expected.to belong_to(:pipeline) } @@ -15,7 +15,7 @@ RSpec.describe Ci::PipelineArtifact, type: :model do it_behaves_like 'UpdateProjectStatistics' do let_it_be(:pipeline, reload: true) { create(:ci_pipeline) } - subject { build(:ci_pipeline_artifact, pipeline: pipeline) } + subject { build(:ci_pipeline_artifact, :with_code_coverage_with_multiple_files, pipeline: pipeline) } end describe 'validations' do @@ -51,7 +51,7 @@ RSpec.describe Ci::PipelineArtifact, type: :model do end describe 'file is being stored' do - subject { create(:ci_pipeline_artifact) } + subject { create(:ci_pipeline_artifact, :with_coverage_report) } context 'when existing object has local store' do it_behaves_like 'mounted file in local store' @@ -68,7 +68,7 @@ RSpec.describe Ci::PipelineArtifact, type: :model do end context 'when file contains multi-byte characters' do - let(:coverage_report_multibyte) { create(:ci_pipeline_artifact, :with_multibyte_characters) } + let(:coverage_report_multibyte) { create(:ci_pipeline_artifact, :with_coverage_multibyte_characters) } it 'sets the size in bytesize' do expect(coverage_report_multibyte.size).to eq(14) @@ -76,48 +76,118 @@ RSpec.describe Ci::PipelineArtifact, type: :model do end end - describe '.has_code_coverage?' do - subject { Ci::PipelineArtifact.has_code_coverage? } + describe '.report_exists?' do + subject(:pipeline_artifact) { Ci::PipelineArtifact.report_exists?(file_type) } - context 'when pipeline artifact has a code coverage' do - let!(:pipeline_artifact) { create(:ci_pipeline_artifact) } + context 'when file_type is code_coverage' do + let(:file_type) { :code_coverage } + + context 'when pipeline artifact has a coverage report' do + let!(:pipeline_artifact) { create(:ci_pipeline_artifact, :with_coverage_report) } + + it 'returns true' do + expect(pipeline_artifact).to be_truthy + end + end - it 'returns true' do - expect(subject).to be_truthy + context 'when pipeline artifact does not have a coverage report' do + it 'returns false' do + expect(pipeline_artifact).to be_falsey + end end end - context 'when pipeline artifact does not have a code coverage' do + context 'when file_type is code_quality_mr_diff' do + let(:file_type) { :code_quality_mr_diff } + + context 'when pipeline artifact has a codequality mr diff report' do + let!(:pipeline_artifact) { create(:ci_pipeline_artifact, :with_codequality_mr_diff_report) } + + it 'returns true' do + expect(pipeline_artifact).to be_truthy + end + end + + context 'when pipeline artifact does not have a codequality mr diff report' do + it 'returns false' do + expect(pipeline_artifact).to be_falsey + end + end + end + + context 'when file_type is nil' do + let(:file_type) { nil } + it 'returns false' do - expect(subject).to be_falsey + expect(pipeline_artifact).to be_falsey end end end - describe '.find_with_code_coverage' do - subject { Ci::PipelineArtifact.find_with_code_coverage } + describe '.find_by_file_type' do + subject(:pipeline_artifact) { Ci::PipelineArtifact.find_by_file_type(file_type) } - context 'when pipeline artifact has a coverage report' do - let!(:coverage_report) { create(:ci_pipeline_artifact) } + context 'when file_type is code_coverage' do + let(:file_type) { :code_coverage } + + context 'when pipeline artifact has a coverage report' do + let!(:coverage_report) { create(:ci_pipeline_artifact, :with_coverage_report) } - it 'returns a pipeline artifact with a code coverage' do - expect(subject.file_type).to eq('code_coverage') + it 'returns a pipeline artifact with a coverage report' do + expect(pipeline_artifact.file_type).to eq('code_coverage') + end + end + + context 'when pipeline artifact does not have a coverage report' do + it 'returns nil' do + expect(pipeline_artifact).to be_nil + end + end + end + + context 'when file_type is code_quality_mr_diff' do + let(:file_type) { :code_quality_mr_diff } + + context 'when pipeline artifact has a quality report' do + let!(:coverage_report) { create(:ci_pipeline_artifact, :with_codequality_mr_diff_report) } + + it 'returns a pipeline artifact with a quality report' do + expect(pipeline_artifact.file_type).to eq('code_quality_mr_diff') + end + end + + context 'when pipeline artifact does not have a quality report' do + it 'returns nil' do + expect(pipeline_artifact).to be_nil + end end end - context 'when pipeline artifact does not have a coverage report' do + context 'when file_type is nil' do + let(:file_type) { nil } + it 'returns nil' do - expect(subject).to be_nil + expect(pipeline_artifact).to be_nil end end end describe '#present' do - subject { coverage_report.present } + subject(:presenter) { report.present } context 'when file_type is code_coverage' do + let(:report) { coverage_report } + it 'uses code coverage presenter' do - expect(subject.present).to be_kind_of(Ci::PipelineArtifacts::CodeCoveragePresenter) + expect(presenter).to be_kind_of(Ci::PipelineArtifacts::CodeCoveragePresenter) + end + end + + context 'when file_type is code_quality_mr_diff' do + let(:report) { create(:ci_pipeline_artifact, :with_codequality_mr_diff_report) } + + it 'uses code codequality mr diff presenter' do + expect(presenter).to be_kind_of(Ci::PipelineArtifacts::CodeQualityMrDiffPresenter) end end end diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 140527e4414..94943fb3644 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -1263,26 +1263,6 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do pipeline.send(event) end - - context 'the feature is disabled' do - it 'does not trigger a worker' do - stub_feature_flags(jira_sync_builds: false) - - expect(worker).not_to receive(:perform_async) - - pipeline.send(event) - end - end - - context 'the feature is enabled for this project' do - it 'does trigger a worker' do - stub_feature_flags(jira_sync_builds: pipeline.project) - - expect(worker).to receive(:perform_async) - - pipeline.send(event) - end - end end end end @@ -2018,13 +1998,34 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do is_expected.to be_falsey end end + + context 'bridge which is allowed to fail fails' do + before do + create :ci_bridge, :allowed_to_fail, :failed, pipeline: pipeline, name: 'rubocop' + end + + it 'returns true' do + is_expected.to be_truthy + end + end + + context 'bridge which is allowed to fail is successful' do + before do + create :ci_bridge, :allowed_to_fail, :success, pipeline: pipeline, name: 'rubocop' + end + + it 'returns false' do + is_expected.to be_falsey + end + end end describe '#number_of_warnings' do it 'returns the number of warnings' do create(:ci_build, :allowed_to_fail, :failed, pipeline: pipeline, name: 'rubocop') + create(:ci_bridge, :allowed_to_fail, :failed, pipeline: pipeline, name: 'rubocop') - expect(pipeline.number_of_warnings).to eq(1) + expect(pipeline.number_of_warnings).to eq(2) end it 'supports eager loading of the number of warnings' do @@ -2322,7 +2323,7 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do context 'on waiting for resource' do before do - allow(build).to receive(:requires_resource?) { true } + allow(build).to receive(:with_resource_group?) { true } allow(Ci::ResourceGroups::AssignResourceFromResourceGroupWorker).to receive(:perform_async) build.enqueue @@ -3389,7 +3390,7 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do describe '#batch_lookup_report_artifact_for_file_type' do context 'with code quality report artifact' do - let(:pipeline) { create(:ci_pipeline, :with_codequality_report, project: project) } + let(:pipeline) { create(:ci_pipeline, :with_codequality_reports, project: project) } it "returns the code quality artifact" do expect(pipeline.batch_lookup_report_artifact_for_file_type(:codequality)).to eq(pipeline.job_artifacts.sample) @@ -3511,6 +3512,66 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do end end + describe '#has_codequality_mr_diff_report?' do + subject { pipeline.has_codequality_mr_diff_report? } + + context 'when pipeline has a codequality mr diff report' do + let(:pipeline) { create(:ci_pipeline, :with_codequality_mr_diff_report, :running, project: project) } + + it { expect(subject).to be_truthy } + end + + context 'when pipeline does not have a codequality mr diff report' do + let(:pipeline) { create(:ci_pipeline, :success, project: project) } + + it { expect(subject).to be_falsey } + end + end + + describe '#can_generate_codequality_reports?' do + subject { pipeline.can_generate_codequality_reports? } + + context 'when pipeline has builds with codequality reports' do + before do + create(:ci_build, :codequality_reports, pipeline: pipeline, project: project) + end + + context 'when pipeline status is running' do + let(:pipeline) { create(:ci_pipeline, :running, project: project) } + + it { expect(subject).to be_falsey } + end + + context 'when pipeline status is success' do + let(:pipeline) { create(:ci_pipeline, :success, project: project) } + + it 'can generate a codequality report' do + expect(subject).to be_truthy + end + + context 'when feature is disabled' do + before do + stub_feature_flags(codequality_mr_diff: false) + end + + it 'can not generate a codequality report' do + expect(subject).to be_falsey + end + end + end + end + + context 'when pipeline does not have builds with codequality reports' do + before do + create(:ci_build, :artifacts, pipeline: pipeline, project: project) + end + + let(:pipeline) { create(:ci_pipeline, :success, project: project) } + + it { expect(subject).to be_falsey } + end + end + describe '#test_report_summary' do subject { pipeline.test_report_summary } diff --git a/spec/models/ci/processable_spec.rb b/spec/models/ci/processable_spec.rb index 35764e2bbbe..6290f4aef16 100644 --- a/spec/models/ci/processable_spec.rb +++ b/spec/models/ci/processable_spec.rb @@ -122,4 +122,58 @@ RSpec.describe Ci::Processable do it { is_expected.to be_empty } end end + + describe 'state transition with resource group' do + let(:resource_group) { create(:ci_resource_group, project: project) } + + context 'when build status is created' do + let(:build) { create(:ci_build, :created, project: project, resource_group: resource_group) } + + it 'is waiting for resource when build is enqueued' do + expect(Ci::ResourceGroups::AssignResourceFromResourceGroupWorker).to receive(:perform_async).with(resource_group.id) + + expect { build.enqueue! }.to change { build.status }.from('created').to('waiting_for_resource') + + expect(build.waiting_for_resource_at).not_to be_nil + end + + context 'when build is waiting for resource' do + before do + build.update_column(:status, 'waiting_for_resource') + end + + it 'is enqueued when build requests resource' do + expect { build.enqueue_waiting_for_resource! }.to change { build.status }.from('waiting_for_resource').to('pending') + end + + it 'releases a resource when build finished' do + expect(build.resource_group).to receive(:release_resource_from).with(build).and_call_original + expect(Ci::ResourceGroups::AssignResourceFromResourceGroupWorker).to receive(:perform_async).with(build.resource_group_id) + + build.enqueue_waiting_for_resource! + build.success! + end + + context 'when build has prerequisites' do + before do + allow(build).to receive(:any_unmet_prerequisites?) { true } + end + + it 'is preparing when build is enqueued' do + expect { build.enqueue_waiting_for_resource! }.to change { build.status }.from('waiting_for_resource').to('preparing') + end + end + + context 'when there are no available resources' do + before do + resource_group.assign_resource_to(create(:ci_build)) + end + + it 'stays as waiting for resource when build requests resource' do + expect { build.enqueue_waiting_for_resource }.not_to change { build.status } + end + end + end + end + end end diff --git a/spec/models/ci/resource_group_spec.rb b/spec/models/ci/resource_group_spec.rb index 9f72d1a82e5..50a786419f2 100644 --- a/spec/models/ci/resource_group_spec.rb +++ b/spec/models/ci/resource_group_spec.rb @@ -32,12 +32,12 @@ RSpec.describe Ci::ResourceGroup do let(:build) { create(:ci_build) } let(:resource_group) { create(:ci_resource_group) } - it 'retains resource for the build' do - expect(resource_group.resources.first.build).to be_nil + it 'retains resource for the processable' do + expect(resource_group.resources.first.processable).to be_nil is_expected.to eq(true) - expect(resource_group.resources.first.build).to eq(build) + expect(resource_group.resources.first.processable).to eq(build) end context 'when there are no free resources' do @@ -51,7 +51,7 @@ RSpec.describe Ci::ResourceGroup do end context 'when the build has already retained a resource' do - let!(:another_resource) { create(:ci_resource, resource_group: resource_group, build: build) } + let!(:another_resource) { create(:ci_resource, resource_group: resource_group, processable: build) } it 'fails to retain resource' do expect { subject }.to raise_error(ActiveRecord::RecordNotUnique) @@ -71,11 +71,11 @@ RSpec.describe Ci::ResourceGroup do end it 'releases resource from the build' do - expect(resource_group.resources.first.build).to eq(build) + expect(resource_group.resources.first.processable).to eq(build) is_expected.to eq(true) - expect(resource_group.resources.first.build).to be_nil + expect(resource_group.resources.first.processable).to be_nil end end diff --git a/spec/models/ci/resource_spec.rb b/spec/models/ci/resource_spec.rb index 90f26ef2b31..5574f6f82b2 100644 --- a/spec/models/ci/resource_spec.rb +++ b/spec/models/ci/resource_spec.rb @@ -19,7 +19,7 @@ RSpec.describe Ci::Resource do subject { described_class.retained_by(build) } let(:build) { create(:ci_build) } - let!(:resource) { create(:ci_resource, build: build) } + let!(:resource) { create(:ci_resource, processable: build) } it 'returns retained resources' do is_expected.to eq([resource]) diff --git a/spec/models/ci/stage_spec.rb b/spec/models/ci/stage_spec.rb index 3d873a1b9c1..0afc491dc73 100644 --- a/spec/models/ci/stage_spec.rb +++ b/spec/models/ci/stage_spec.rb @@ -288,6 +288,7 @@ RSpec.describe Ci::Stage, :models do context 'when stage has warnings' do before do create(:ci_build, :failed, :allowed_to_fail, stage_id: stage.id) + create(:ci_bridge, :failed, :allowed_to_fail, stage_id: stage.id) end describe '#has_warnings?' do @@ -310,7 +311,7 @@ RSpec.describe Ci::Stage, :models do expect(synced_queries.count).to eq 1 expect(stage.number_of_warnings.inspect).to include 'BatchLoader' - expect(stage.number_of_warnings).to eq 1 + expect(stage.number_of_warnings).to eq 2 end end end |