reset connection builder by default when Faraday::Connection#build is called

This commit is contained in:
rick 2010-04-27 10:11:20 -04:00
parent 6220abd088
commit f033ad4730
2 changed files with 33 additions and 2 deletions

View File

@ -25,11 +25,12 @@ module Faraday
end
def build(options = {}, &block)
if options[:reset]
inner = @handlers.shift
if !options[:keep]
@handlers.clear
end
block.call(self)
run(self.class.inner_app)
run(inner || self.class.inner_app)
end
def [](index)

View File

@ -219,6 +219,36 @@ class TestConnection < Faraday::TestCase
end
end
def test_allows_rebuilding_of_connection_handlers
conn = Faraday::Connection.new
conn.to_app
inner = conn.builder.handlers[0]
mware = conn.builder.handlers[1].call({})
assert_kind_of Faraday::Adapter::NetHttp, mware
conn.build do |b|
b.adapter :test
end
mware = conn.builder.handlers[1].call({})
assert_kind_of Faraday::Adapter::Test, mware
assert_equal inner, conn.builder.handlers[0]
end
def test_allows_extending_of_existing_connection_handlers
conn = Faraday::Connection.new
conn.to_app
mware = conn.builder.handlers[1].call({})
assert_kind_of Faraday::Adapter::NetHttp, mware
assert_equal 2, conn.builder.handlers.size
conn.build :keep => true do |b|
b.adapter :test
end
mware = conn.builder.handlers[1].call({})
assert_kind_of Faraday::Adapter::Test, mware
assert_equal 3, conn.builder.handlers.size
end
def test_sets_default_adapter_if_none_set
conn = Faraday::Connection.new
assert_equal 0, conn.builder.handlers.size