From 7cdff322cf737b9f6a0118fa82fda1635111a41a Mon Sep 17 00:00:00 2001 From: rick Date: Mon, 13 May 2013 14:38:14 -0600 Subject: [PATCH] respect Faraday::RequestOptions#params_encoder Fixes #269 --- lib/faraday/adapter/test.rb | 3 ++- test/adapters/test_middleware_test.rb | 29 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/faraday/adapter/test.rb b/lib/faraday/adapter/test.rb index 7e6920c8a..6dc34eef8 100644 --- a/lib/faraday/adapter/test.rb +++ b/lib/faraday/adapter/test.rb @@ -144,10 +144,11 @@ def configure def call(env) super normalized_path = Faraday::Utils.normalize_path(env[:url]) + params_encoder = env.request.params_encoder || Faraday::Utils.default_params_encoder if stub = stubs.match(env[:method], normalized_path, env.request_headers, env[:body]) env[:params] = (query = env[:url].query) ? - Faraday::Utils.parse_nested_query(query) : + params_encoder.decode(query) : {} status, headers, body = stub.block.call(env) save_response(env, status, body, headers) diff --git a/test/adapters/test_middleware_test.rb b/test/adapters/test_middleware_test.rb index c6aeecdef..2acd4a4eb 100644 --- a/test/adapters/test_middleware_test.rb +++ b/test/adapters/test_middleware_test.rb @@ -69,6 +69,35 @@ def test_yields_env_to_stubs assert_equal 'a', @conn.get('http://foo.com/hello?a=1').body end + def test_parses_params_with_default_encoder + @stubs.get '/hello' do |env| + assert_equal '1', env[:params]['a']['b'] + [200, {}, 'a'] + end + + assert_equal 'a', @conn.get('http://foo.com/hello?a[b]=1').body + end + + def test_parses_params_with_nested_encoder + @stubs.get '/hello' do |env| + assert_equal '1', env[:params]['a']['b'] + [200, {}, 'a'] + end + + @conn.options.params_encoder = Faraday::NestedParamsEncoder + assert_equal 'a', @conn.get('http://foo.com/hello?a[b]=1').body + end + + def test_parses_params_with_flat_encoder + @stubs.get '/hello' do |env| + assert_equal '1', env[:params]['a[b]'] + [200, {}, 'a'] + end + + @conn.options.params_encoder = Faraday::FlatParamsEncoder + assert_equal 'a', @conn.get('http://foo.com/hello?a[b]=1').body + end + def test_raises_an_error_if_no_stub_is_found_for_request assert_raises Stubs::NotFound do @conn.get('/invalid'){ [200, {}, []] }