From e3d232351e5e48536fcfd1a3877045f7519af2f5 Mon Sep 17 00:00:00 2001 From: iMacTia Date: Mon, 20 Nov 2017 10:27:09 +0000 Subject: [PATCH] Additional tests: uses default adapter if no adapter is specified on custom block --- lib/faraday/rack_builder.rb | 3 ++- test/middleware_stack_test.rb | 22 +++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/faraday/rack_builder.rb b/lib/faraday/rack_builder.rb index a0d870294..513ce1275 100644 --- a/lib/faraday/rack_builder.rb +++ b/lib/faraday/rack_builder.rb @@ -53,6 +53,7 @@ def build(app) end def initialize(handlers = []) + @adapter = nil @handlers = handlers if block_given? build(&Proc.new) @@ -67,6 +68,7 @@ def build(options = {}) raise_if_locked @handlers.clear unless options[:keep] yield(self) if block_given? + adapter(Faraday.default_adapter) unless @adapter end def [](idx) @@ -170,7 +172,6 @@ def app def to_app(inner_app) # last added handler is the deepest and thus closest to the inner app # adapter is always the last one - adapter(Faraday.default_adapter) unless @adapter (@handlers + [@adapter]).reverse.inject(inner_app) { |app, handler| handler.build(app) } end diff --git a/test/middleware_stack_test.rb b/test/middleware_stack_test.rb index 1028ce631..5ee5b5a45 100644 --- a/test/middleware_stack_test.rb +++ b/test/middleware_stack_test.rb @@ -21,13 +21,33 @@ def setup @builder = @conn.builder end - def test_sets_default_adapter_if_none_set + def test_default_stack default_middleware = Faraday::Request.lookup_middleware(:url_encoded) default_adapter_klass = Faraday::Adapter.lookup_middleware(Faraday.default_adapter) assert @builder[0] == default_middleware assert @builder.adapter == default_adapter_klass end + def test_sets_default_adapter_if_none_set + @conn = Faraday::Connection.new do |_| + # custom stack, but missing adapter + end + @builder = @conn.builder + default_adapter_klass = Faraday::Adapter.lookup_middleware(Faraday.default_adapter) + assert_nil @builder[0] + assert @builder.adapter == default_adapter_klass + end + + def test_use_provided_adapter + @conn = Faraday::Connection.new do |builder| + builder.adapter :test + end + @builder = @conn.builder + test_adapter_klass = Faraday::Adapter.lookup_middleware(:test) + assert_nil @builder[0] + assert @builder.adapter == test_adapter_klass + end + def test_allows_rebuilding build_stack Apple build_stack Orange