summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--spec/models/ci/build_spec.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/models/ci/build_spec.rb b/spec/models/ci/build_spec.rb
index 36d10636ae9..1dd26750edd 100644
--- a/spec/models/ci/build_spec.rb
+++ b/spec/models/ci/build_spec.rb
@@ -19,4 +19,55 @@ describe Ci::Build, models: true do
expect(build.trace).to eq(test_trace)
end
end
+
+ describe '#has_trace_file?' do
+ context 'when there is no trace' do
+ it { expect(build.has_trace_file?).to be_falsey }
+ it { expect(build.trace).to be_nil }
+ end
+
+ context 'when there is a trace' do
+ context 'when trace is stored in file' do
+ before do
+ build.trace = test_trace
+ build.save
+ end
+
+ it { expect(build.has_trace_file?).to be_truthy }
+ it { expect(build.trace).to eq(test_trace) }
+ end
+
+ context 'when trace is stored in old file' do
+ before do
+ build.trace = test_trace
+ build.save
+
+ build.project.ci_id = 999
+ build.project.save
+
+ FileUtils.mkdir_p(build.old_dir_to_trace)
+ FileUtils.mv(build.path_to_trace, build.old_path_to_trace)
+ end
+
+ it { expect(build.has_trace_file?).to be_truthy }
+ it { expect(build.trace).to eq(test_trace) }
+ end
+
+ context 'when there is stored in DB' do
+ class Ci::Build
+ def write_db_trace=(trace)
+ write_attribute :trace, trace
+ end
+ end
+
+ before do
+ build.write_db_trace = test_trace
+ build.save
+ end
+
+ it { expect(build.has_trace_file?).to be_falsey }
+ it { expect(build.trace).to eq(test_trace) }
+ end
+ end
+ end
end