diff --git a/.gitignore b/.gitignore index 68072775..e5dd18e6 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ config/travis.yml log/ vendor config/skylight.yml +.coverage diff --git a/lib/travis/api/app/endpoint/builds.rb b/lib/travis/api/app/endpoint/builds.rb index d38d5fe3..ed1888d3 100644 --- a/lib/travis/api/app/endpoint/builds.rb +++ b/lib/travis/api/app/endpoint/builds.rb @@ -1,4 +1,5 @@ require 'travis/api/app' +require 'travis/api/workers/build_cancellation' class Travis::Api::App class Endpoint @@ -39,7 +40,7 @@ class Travis::Api::App else #service.run #check syntax of line below - Travis::Sidekiq::BuildCancellation.perform_async(params.merge(source: 'api')) + Travis::Sidekiq::BuildCancellation.perform_async(id: params[:id], source: 'api') Metriks.meter("api.request.cancel_build.success").mark status 204 diff --git a/lib/travis/api/workers/build_cancellation.rb b/lib/travis/api/workers/build_cancellation.rb index be19d31b..019627ca 100644 --- a/lib/travis/api/workers/build_cancellation.rb +++ b/lib/travis/api/workers/build_cancellation.rb @@ -7,23 +7,11 @@ module Travis class ProcessingError < StandardError; end include ::Sidekiq::Worker - # do we need to name the queue here? we didn't do this in Admin. We passed this info in the procfile - sidekiq_options queue: build_cancellations - - attr_accessor :data + sidekiq_options queue: :build_cancellations def perform(data) - @data = data - if payload - service.run - else - Travis.logger.warn("The #{type} payload was empty and could not be processed") - end - end - - def service - @service ||= Travis.service(:cancel_build, data) + Travis.service(:cancel_build, data).run end end end -end \ No newline at end of file +end diff --git a/spec/integration/v2/builds_spec.rb b/spec/integration/v2/builds_spec.rb index 4c528c53..8f47aca2 100644 --- a/spec/integration/v2/builds_spec.rb +++ b/spec/integration/v2/builds_spec.rb @@ -75,17 +75,20 @@ describe 'Builds' do end context 'when build can be canceled' do - it 'cancels the build and responds with 204' do + before do + Travis::Sidekiq::BuildCancellation.stubs(:perform_async) build.matrix.each { |j| j.update_attribute(:state, 'created') } build.update_attribute(:state, 'created') + end - response = nil - expect { - response = post "/builds/#{build.id}/cancel", {}, headers - }.to change { build.reload.state } + it 'cancels the build' do + Travis::Sidekiq::BuildCancellation.expects(:perform_async).with(id: build.id.to_s, source: 'api') + post "/builds/#{build.id}/cancel", {}, headers + end + + it 'responds with 204' do + response = post "/builds/#{build.id}/cancel", {}, headers response.status.should == 204 - - build.state.should == 'canceled' end end end