diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-27 18:13:43 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-27 18:13:43 +0300 |
commit | 1403e9bc459bcf37c9fdfb61aadd268d11b0abfd (patch) | |
tree | 6e3de274df64d322712ef6efdc7047d40c7adff3 /spec/models | |
parent | af3904f9d0c9abab61f96f63d0c889f54e31fabd (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/ci/build_spec.rb | 36 | ||||
-rw-r--r-- | spec/models/ci/pipeline_spec.rb | 39 |
2 files changed, 75 insertions, 0 deletions
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb index 675215d533c..41b817f231b 100644 --- a/spec/models/ci/build_spec.rb +++ b/spec/models/ci/build_spec.rb @@ -160,6 +160,42 @@ RSpec.describe Ci::Build do end end + describe '.with_erasable_artifacts' do + subject { described_class.with_erasable_artifacts } + + context 'when job does not have any artifacts' do + let!(:job) { create(:ci_build) } + + it 'does not return the job' do + is_expected.not_to include(job) + end + end + + ::Ci::JobArtifact.erasable_file_types.each do |type| + context "when job has a #{type} artifact" do + it 'returns the job' do + job = create(:ci_build) + create( + :ci_job_artifact, + file_format: ::Ci::JobArtifact::TYPE_AND_FORMAT_PAIRS[type.to_sym], + file_type: type, + job: job + ) + + is_expected.to include(job) + end + end + end + + context 'when job has a non-erasable artifact' do + let!(:job) { create(:ci_build, :trace_artifact) } + + it 'does not return the job' do + is_expected.not_to include(job) + end + end + end + describe '.with_live_trace' do subject { described_class.with_live_trace } diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb index 79f2565e173..839e5ed03cc 100644 --- a/spec/models/ci/pipeline_spec.rb +++ b/spec/models/ci/pipeline_spec.rb @@ -5546,4 +5546,43 @@ RSpec.describe Ci::Pipeline, :mailer, factory_default: :keep do end end end + + describe '#has_erasable_artifacts?' do + subject { pipeline.has_erasable_artifacts? } + + context 'when pipeline is not complete' do + let(:pipeline) { create(:ci_pipeline, :running, :with_job) } + + context 'and has erasable artifacts' do + before do + create(:ci_job_artifact, :archive, job: pipeline.builds.first) + end + + it { is_expected.to be_falsey } + end + end + + context 'when pipeline is complete' do + let(:pipeline) { create(:ci_pipeline, :success, :with_job) } + + context 'and has no artifacts' do + it { is_expected.to be_falsey } + end + + Ci::JobArtifact.erasable_file_types.each do |type| + context "and has an artifact of type #{type}" do + before do + create( + :ci_job_artifact, + file_format: ::Ci::JobArtifact::TYPE_AND_FORMAT_PAIRS[type.to_sym], + file_type: type, + job: pipeline.builds.first + ) + end + + it { is_expected.to be_truthy } + end + end + end + end end |