Add build finished worker that creates a workflow

This commit is contained in:
Grzegorz Bizon 2016-10-14 12:53:51 +02:00
parent b8003aa012
commit 5904793ad8
3 changed files with 43 additions and 2 deletions

View File

@ -83,8 +83,7 @@ module Ci
after_transition any => [:success, :failed, :canceled] do |build|
build.run_after_commit do
BuildCoverageWorker.perform_async(id)
BuildHooksWorker.perform_async(id)
BuildFinishedWorker.perform_async(id)
end
end

View File

@ -0,0 +1,12 @@
class BuildFinishedWorker
include Sidekiq::Worker
def perform(build_id)
Ci::Build.find_by(id: build_id).try do |build|
build.with_lock do
BuildCoverageWorker.new.perform(build.id)
BuildHooksWorker.new.perform(build.id)
end
end
end
end

View File

@ -0,0 +1,30 @@
require 'spec_helper'
describe BuildFinishedWorker do
describe '#perform' do
context 'when build exists' do
let(:build) { create(:ci_build) }
it 'calculates coverage and calls hooks' do
expect(BuildCoverageWorker)
.to receive(:new).ordered.and_call_original
expect(BuildHooksWorker)
.to receive(:new).ordered.and_call_original
expect_any_instance_of(BuildCoverageWorker)
.to receive(:perform)
expect_any_instance_of(BuildHooksWorker)
.to receive(:perform)
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