diff options
Diffstat (limited to 'spec/models/ci/job_artifact_spec.rb')
-rw-r--r-- | spec/models/ci/job_artifact_spec.rb | 62 |
1 files changed, 45 insertions, 17 deletions
diff --git a/spec/models/ci/job_artifact_spec.rb b/spec/models/ci/job_artifact_spec.rb index 1bf338f4c70..2f449d617be 100644 --- a/spec/models/ci/job_artifact_spec.rb +++ b/spec/models/ci/job_artifact_spec.rb @@ -31,6 +31,22 @@ describe Ci::JobArtifact do end end + describe '.erasable' do + subject { described_class.erasable } + + context 'when there is am erasable artifact' do + let!(:artifact) { create(:ci_job_artifact, :junit) } + + it { is_expected.to eq([artifact]) } + end + + context 'when there are no erasable artifacts' do + let!(:artifact) { create(:ci_job_artifact, :trace) } + + it { is_expected.to be_empty } + end + end + describe 'callbacks' do subject { create(:ci_job_artifact, :archive) } @@ -106,34 +122,46 @@ describe Ci::JobArtifact do describe 'validates file format' do subject { artifact } - context 'when archive type with zip format' do - let(:artifact) { build(:ci_job_artifact, :archive, file_format: :zip) } + described_class::TYPE_AND_FORMAT_PAIRS.except(:trace).each do |file_type, file_format| + context "when #{file_type} type with #{file_format} format" do + let(:artifact) { build(:ci_job_artifact, file_type: file_type, file_format: file_format) } - it { is_expected.to be_valid } - end + it { is_expected.to be_valid } + end - context 'when archive type with gzip format' do - let(:artifact) { build(:ci_job_artifact, :archive, file_format: :gzip) } + context "when #{file_type} type without format specification" do + let(:artifact) { build(:ci_job_artifact, file_type: file_type, file_format: nil) } - it { is_expected.not_to be_valid } - end + it { is_expected.not_to be_valid } + end - context 'when archive type without format specification' do - let(:artifact) { build(:ci_job_artifact, :archive, file_format: nil) } + context "when #{file_type} type with other formats" do + described_class.file_formats.except(file_format).values.each do |other_format| + let(:artifact) { build(:ci_job_artifact, file_type: file_type, file_format: other_format) } - it { is_expected.not_to be_valid } + it { is_expected.not_to be_valid } + end + end end + end - context 'when junit type with zip format' do - let(:artifact) { build(:ci_job_artifact, :junit, file_format: :zip) } + describe 'validates DEFAULT_FILE_NAMES' do + subject { described_class::DEFAULT_FILE_NAMES } - it { is_expected.not_to be_valid } + described_class.file_types.each do |file_type, _| + it "expects #{file_type} to be included" do + is_expected.to include(file_type.to_sym) + end end + end - context 'when junit type with gzip format' do - let(:artifact) { build(:ci_job_artifact, :junit, file_format: :gzip) } + describe 'validates TYPE_AND_FORMAT_PAIRS' do + subject { described_class::TYPE_AND_FORMAT_PAIRS } - it { is_expected.to be_valid } + described_class.file_types.each do |file_type, _| + it "expects #{file_type} to be included" do + expect(described_class.file_formats).to include(subject[file_type.to_sym]) + end end end |