64 lines
1.9 KiB
Ruby
64 lines
1.9 KiB
Ruby
describe Travis::Services::FindBuild do
|
|
let(:repo) { Factory(:repository, owner_name: 'travis-ci', name: 'travis-core') }
|
|
let!(:build) { Factory(:build, repository: repo, state: :finished, number: 1, config: {'sudo' => false}) }
|
|
let(:params) { { id: build.id } }
|
|
let(:service) { described_class.new(stub('user'), params) }
|
|
|
|
describe 'run' do
|
|
it 'finds a build by the given id' do
|
|
service.run.should == build
|
|
end
|
|
|
|
it 'does not raise if the build could not be found' do
|
|
@params = { :id => build.id + 1 }
|
|
lambda { service.run }.should_not raise_error
|
|
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 builds updated_at attribute' do
|
|
service.updated_at.to_s.should == build.updated_at.to_s
|
|
end
|
|
end
|
|
|
|
describe 'with newer associated record' do
|
|
it 'returns updated_at of newest result' do
|
|
build.update_attribute(:updated_at, 5.minutes.ago)
|
|
build.reload.updated_at.should < build.matrix.first.updated_at
|
|
service.updated_at.to_s.should == build.matrix.first.updated_at.to_s
|
|
end
|
|
end
|
|
|
|
describe 'without updated_at in one of the resources' do
|
|
it 'returns updated_at of newest result' do
|
|
Build.any_instance.stubs(updated_at: nil)
|
|
expect {
|
|
service.updated_at
|
|
}.to_not raise_error
|
|
end
|
|
end
|
|
|
|
# TODO builds can be requeued, so finished builds are no more final
|
|
#
|
|
# describe 'final?' do
|
|
# it 'returns true if the build is finished' do
|
|
# build.update_attributes!(:state => :errored)
|
|
# service.final?.should be_truthy
|
|
# end
|
|
|
|
# it 'returns false if the build is not finished' do
|
|
# build.update_attributes!(:state => :started)
|
|
# service.final?.should be false
|
|
# end
|
|
# end
|
|
end
|