From b6a351c7666f7a68d064bc280322f75157990c76 Mon Sep 17 00:00:00 2001 From: Piotr Sarnacki Date: Tue, 9 Jul 2013 15:14:53 +0200 Subject: [PATCH] Convert params['ids'] to array Services like find_builds can accept :ids as a param, but it needs to be an array, string will be passed to find and converted into integer. --- lib/travis/api/app/endpoint/builds.rb | 1 + lib/travis/api/app/endpoint/repos.rb | 2 ++ spec/integration/v2/builds_spec.rb | 12 ++++++++++++ 3 files changed, 15 insertions(+) diff --git a/lib/travis/api/app/endpoint/builds.rb b/lib/travis/api/app/endpoint/builds.rb index 3ef22141..f956c7ad 100644 --- a/lib/travis/api/app/endpoint/builds.rb +++ b/lib/travis/api/app/endpoint/builds.rb @@ -5,6 +5,7 @@ class Travis::Api::App class Builds < Endpoint get '/' do name = params[:branches] ? :find_branches : :find_builds + params['ids'] = params['ids'].split(',') if params['ids'].respond_to?(:split) respond_with service(name, params) end diff --git a/lib/travis/api/app/endpoint/repos.rb b/lib/travis/api/app/endpoint/repos.rb index e1db9bb5..34179b36 100644 --- a/lib/travis/api/app/endpoint/repos.rb +++ b/lib/travis/api/app/endpoint/repos.rb @@ -63,6 +63,8 @@ class Travis::Api::App # # json(:builds) get '/:owner_name/:name/builds' do + name = params[:branches] ? :find_branches : :find_builds + params['ids'] = params['ids'].split(',') if params['ids'].respond_to?(:split) respond_with service(:find_builds, params) end diff --git a/spec/integration/v2/builds_spec.rb b/spec/integration/v2/builds_spec.rb index 51eb82fb..8410374f 100644 --- a/spec/integration/v2/builds_spec.rb +++ b/spec/integration/v2/builds_spec.rb @@ -25,6 +25,18 @@ describe 'Builds' do response.should deliver_json_for(repo.builds.order('id DESC'), version: 'v2', type: :builds) end + it 'GET /repos/svenfuchs/minimal/builds?ids=1,2' do + ids = repo.builds.map(&:id).sort.join(',') + response = get "/repos/svenfuchs/minimal/builds?ids=#{ids}", {}, headers + response.should deliver_json_for(repo.builds.order('id ASC'), version: 'v2') + end + + it 'GET /builds?ids=1,2' do + ids = repo.builds.map(&:id).sort.join(',') + response = get "/builds?ids=#{ids}", {}, headers + response.should deliver_json_for(repo.builds.order('id ASC'), version: 'v2') + end + it 'GET /repos/svenfuchs/minimal/builds/1' do response = get "/repos/svenfuchs/minimal/builds/#{build.id}", {}, headers response.should deliver_json_for(build, version: 'v2')