Fix support for old CI API when image or services are not specified
This commit is contained in:
parent
8efc884166
commit
0711d9adfc
|
@ -52,7 +52,7 @@ module Ci
|
||||||
# when old API will be removed (planned for August 2017).
|
# when old API will be removed (planned for August 2017).
|
||||||
model.options.dup.tap do |options|
|
model.options.dup.tap do |options|
|
||||||
options[:image] = options[:image][:name] if options[:image].is_a?(Hash)
|
options[:image] = options[:image][:name] if options[:image].is_a?(Hash)
|
||||||
options[:services].map! do |service|
|
options[:services]&.map! do |service|
|
||||||
if service.is_a?(Hash)
|
if service.is_a?(Hash)
|
||||||
service[:name]
|
service[:name]
|
||||||
else
|
else
|
||||||
|
|
|
@ -69,6 +69,72 @@ describe Ci::API::Builds do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
context 'when an old image syntax is used' do
|
||||||
|
before do
|
||||||
|
build.update!(options: { image: 'codeclimate' })
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'starts a build' do
|
||||||
|
register_builds info: { platform: :darwin }
|
||||||
|
|
||||||
|
expect(response).to have_http_status(201)
|
||||||
|
expect(json_response["options"]).to eq({ "image" => "codeclimate" })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when a new image syntax is used' do
|
||||||
|
before do
|
||||||
|
build.update!(options: { image: { name: 'codeclimate' } })
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'starts a build' do
|
||||||
|
register_builds info: { platform: :darwin }
|
||||||
|
|
||||||
|
expect(response).to have_http_status(201)
|
||||||
|
expect(json_response["options"]).to eq({ "image" => "codeclimate" })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when an old service syntax is used' do
|
||||||
|
before do
|
||||||
|
build.update!(options: { services: ['mysql'] })
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'starts a build' do
|
||||||
|
register_builds info: { platform: :darwin }
|
||||||
|
|
||||||
|
expect(response).to have_http_status(201)
|
||||||
|
expect(json_response["options"]).to eq({ "services" => ["mysql"] })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when a new service syntax is used' do
|
||||||
|
before do
|
||||||
|
build.update!(options: { services: [name: 'mysql'] })
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'starts a build' do
|
||||||
|
register_builds info: { platform: :darwin }
|
||||||
|
|
||||||
|
expect(response).to have_http_status(201)
|
||||||
|
expect(json_response["options"]).to eq({ "services" => ["mysql"] })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'when no image or service is defined' do
|
||||||
|
before do
|
||||||
|
build.update!(options: {})
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'starts a build' do
|
||||||
|
register_builds info: { platform: :darwin }
|
||||||
|
|
||||||
|
expect(response).to have_http_status(201)
|
||||||
|
|
||||||
|
expect(json_response["options"]).to be_empty
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context 'when there is a pending build' do
|
context 'when there is a pending build' do
|
||||||
it 'starts a build' do
|
it 'starts a build' do
|
||||||
register_builds info: { platform: :darwin }
|
register_builds info: { platform: :darwin }
|
||||||
|
|
Loading…
Reference in New Issue