summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-10-13 15:22:55 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2016-10-13 15:22:55 +0200
commit5fd635d18b77f56f6acd264ccaa1a357e2fa1cdd (patch)
tree51cb8384c6d7a73d13d1edbc4cf0819c8fdb9852
parent8efa041a730515e57f127850414b3557c7af60b4 (diff)
downloadgitlab-ce-5fd635d18b77f56f6acd264ccaa1a357e2fa1cdd.tar.gz
Update code coverage for CI build asynchronously
-rw-r--r--app/workers/build_coverage_worker.rb9
-rw-r--r--spec/workers/build_coverage_worker_spec.rb23
2 files changed, 32 insertions, 0 deletions
diff --git a/app/workers/build_coverage_worker.rb b/app/workers/build_coverage_worker.rb
new file mode 100644
index 00000000000..0680645a8db
--- /dev/null
+++ b/app/workers/build_coverage_worker.rb
@@ -0,0 +1,9 @@
+class BuildCoverageWorker
+ include Sidekiq::Worker
+ sidekiq_options queue: :default
+
+ def perform(build_id)
+ Ci::Build.find_by(id: build_id)
+ .try(:update_coverage)
+ end
+end
diff --git a/spec/workers/build_coverage_worker_spec.rb b/spec/workers/build_coverage_worker_spec.rb
new file mode 100644
index 00000000000..ba20488f663
--- /dev/null
+++ b/spec/workers/build_coverage_worker_spec.rb
@@ -0,0 +1,23 @@
+require 'spec_helper'
+
+describe BuildCoverageWorker do
+ describe '#perform' do
+ context 'when build exists' do
+ let!(:build) { create(:ci_build) }
+
+ it 'updates code coverage' do
+ expect_any_instance_of(Ci::Build)
+ .to receive(:update_coverage)
+
+ described_class.new.perform(build.id)
+ end
+ end
+
+ context 'when build does not exist' do
+ it 'does not raise exception' do
+ expect { described_class.new.perform(123) }
+ .not_to raise_error
+ end
+ end
+ end
+end