58 lines
1.8 KiB
Ruby
58 lines
1.8 KiB
Ruby
describe Travis::Services::FindJob do
|
|
let(:repo) { Factory(:repository) }
|
|
let!(:job) { Factory(:test, repository: repo, state: :created, queue: 'builds.linux', config: {'sudo' => false}) }
|
|
let(:params) { { id: job.id } }
|
|
let(:service) { described_class.new(stub('user'), params) }
|
|
|
|
describe 'run' do
|
|
it 'finds the job with the given id' do
|
|
@params = { id: job.id }
|
|
service.run.should == job
|
|
end
|
|
|
|
it 'does not raise if the job could not be found' do
|
|
@params = { id: job.id + 1 }
|
|
lambda { service.run }.should_not raise_error
|
|
end
|
|
|
|
it 'raises RecordNotFound if a SubclassNotFound error is raised during find' do
|
|
find_by_id = stub.tap do |s|
|
|
s.stubs(:column_names).returns(%w(id config))
|
|
s.stubs(:select).returns(s)
|
|
s.stubs(:find_by_id).raises(ActiveRecord::SubclassNotFound)
|
|
end
|
|
service.stubs(:scope).returns(find_by_id)
|
|
lambda { service.run }.should raise_error(ActiveRecord::RecordNotFound)
|
|
end
|
|
|
|
it 'includes config by default' do
|
|
service.run.config.should include(:sudo)
|
|
end
|
|
|
|
it 'excludes config when requested' do
|
|
params[:exclude_config] = '1'
|
|
service.run.config.should_not include(:sudo)
|
|
end
|
|
end
|
|
|
|
describe 'updated_at' do
|
|
it 'returns jobs updated_at attribute' do
|
|
service.updated_at.to_s.should == job.updated_at.to_s
|
|
end
|
|
end
|
|
|
|
# TODO jobs can be requeued, so finished jobs are no more final
|
|
#
|
|
# describe 'final?' do
|
|
# it 'returns true if the job is finished' do
|
|
# job.update_attributes!(state: :errored)
|
|
# service.final?.should be_truthy
|
|
# end
|
|
|
|
# it 'returns false if the job is not finished' do
|
|
# job.update_attributes!(state: :started)
|
|
# service.final?.should be false
|
|
# end
|
|
# end
|
|
end
|