Skip to content

Commit

Permalink
Additional tests: uses default adapter if no adapter is specified on …
Browse files Browse the repository at this point in the history
…custom block
  • Loading branch information
iMacTia committed Nov 20, 2017
1 parent eec41ab commit e3d2323
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 2 deletions.
3 changes: 2 additions & 1 deletion lib/faraday/rack_builder.rb
Expand Up @@ -53,6 +53,7 @@ def build(app)
end

def initialize(handlers = [])
@adapter = nil
@handlers = handlers
if block_given?
build(&Proc.new)
Expand All @@ -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)
Expand Down Expand Up @@ -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

Expand Down
22 changes: 21 additions & 1 deletion test/middleware_stack_test.rb
Expand Up @@ -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
Expand Down

0 comments on commit e3d2323

Please sign in to comment.