summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/workers/expire_build_artifacts_worker.rb2
-rw-r--r--spec/workers/expire_build_artifacts_worker_spec.rb55
2 files changed, 56 insertions, 1 deletions
diff --git a/app/workers/expire_build_artifacts_worker.rb b/app/workers/expire_build_artifacts_worker.rb
index 17b3b5f227f..c64ea108d52 100644
--- a/app/workers/expire_build_artifacts_worker.rb
+++ b/app/workers/expire_build_artifacts_worker.rb
@@ -1,4 +1,4 @@
-class ExpireBuildArtifacts
+class ExpireBuildArtifactsWorker
include Sidekiq::Worker
def perform
diff --git a/spec/workers/expire_build_artifacts_worker_spec.rb b/spec/workers/expire_build_artifacts_worker_spec.rb
new file mode 100644
index 00000000000..c9ccddc2a09
--- /dev/null
+++ b/spec/workers/expire_build_artifacts_worker_spec.rb
@@ -0,0 +1,55 @@
+require 'spec_helper'
+
+describe ExpireBuildArtifactsWorker do
+ include RepoHelpers
+
+ let(:worker) { ExpireBuildArtifactsWorker.new }
+
+ describe '#perform' do
+ context 'with expired artifacts' do
+ let!(:build) { create(:ci_build, :artifacts, artifacts_expire_at: Time.now - 7.days) }
+
+ it do
+ expect_any_instance_of(Ci::Build).to receive(:erase_artifacts!)
+ worker.perform
+ build.reload
+ expect(build.artifacts_expired?).to be_truthy
+ end
+ end
+
+ context 'with not yet expired artifacts' do
+ let!(:build) { create(:ci_build, :artifacts, artifacts_expire_at: Time.now + 7.days) }
+
+ it do
+ expect_any_instance_of(Ci::Build).not_to receive(:erase_artifacts!)
+ worker.perform
+ build.reload
+ expect(build.artifacts_expired?).to be_falsey
+ end
+ end
+
+ context 'without expire date' do
+ let!(:build) { create(:ci_build, :artifacts) }
+
+ it do
+ expect_any_instance_of(Ci::Build).not_to receive(:erase_artifacts!)
+ worker.perform
+ end
+ end
+
+ context 'for expired artifacts' do
+ let!(:build) { create(:ci_build, :artifacts, artifacts_expire_at: Time.now - 7.days) }
+
+ before do
+ build.erase_artifacts!
+ end
+
+ it do
+ expect_any_instance_of(Ci::Build).not_to receive(:erase_artifacts!)
+ worker.perform
+ build.reload
+ expect(build.artifacts_expired?).to be_truthy
+ end
+ end
+ end
+end