travis-api/spec_core/services/cancel_job_spec.rb
2016-06-19 14:35:54 +02:00

41 lines
1.1 KiB
Ruby

describe Travis::Services::CancelJob do
let(:repo) { Factory(:repository) }
let!(:job) { Factory(:test, repository: repo, state: :created) }
let(:params) { { id: job.id, source: 'tests' } }
let(:user) { Factory(:user) }
let(:service) { described_class.new(user, params) }
describe 'run' do
it 'should cancel the job if it\'s cancelable' do
job.stubs(:cancelable?).returns(true)
service.stubs(:authorized?).returns(true)
publisher = mock('publisher')
service.stubs(:publisher).returns(publisher)
publisher.expects(:publish).with(type: 'cancel_job', job_id: job.id, source: 'tests')
expect {
service.run
}.to change { job.reload.state }
job.state.should == 'canceled'
end
it 'should not cancel the job if it\'s not cancelable' do
job.state.should == :created
job.stubs(:cancelable?).returns(false)
expect {
service.run
}.to_not change { job.state }
end
it 'should not be able to cancel job if user does not have pull permission' do
user.permissions.destroy_all
service.can_cancel?.should be false
end
end
end