41 lines
1.1 KiB
Ruby
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
|
|
|