Commit 0711d9ad authored by Kamil Trzcinski's avatar Kamil Trzcinski

Fix support for old CI API when image or services are not specified

parent 8efc8841
...@@ -52,7 +52,7 @@ module Ci ...@@ -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 ...@@ -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 }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment