test/options_test.rb in faraday-0.9.0.rc5 vs test/options_test.rb in faraday-0.9.0.rc6

- old
+ new

@@ -1,10 +1,10 @@ require File.expand_path('../helper', __FILE__) class OptionsTest < Faraday::TestCase class SubOptions < Faraday::Options.new(:sub); end - class Options < Faraday::Options.new(:a, :b, :c) + class ParentOptions < Faraday::Options.new(:a, :b, :c) options :c => SubOptions end def test_request_proxy_setter options = Faraday::RequestOptions.new @@ -31,47 +31,68 @@ assert_equal 80, options.port assert_equal 'example.org', options.host assert_equal 'http', options.scheme end + def test_proxy_options_hash_access + proxy = Faraday::ProxyOptions.from 'http://a%40b:pw%20d@example.org' + assert_equal 'a@b', proxy[:user] + assert_equal 'a@b', proxy.user + assert_equal 'pw d', proxy[:password] + assert_equal 'pw d', proxy.password + end + + def test_proxy_options_no_auth + proxy = Faraday::ProxyOptions.from 'http://example.org' + assert_nil proxy.user + assert_nil proxy.password + end + def test_from_options - options = Options.new 1 + options = ParentOptions.new 1 - value = Options.from(options) + value = ParentOptions.from(options) assert_equal 1, value.a assert_nil value.b end def test_from_options_with_sub_object sub = SubOptions.new 1 - options = Options.from :a => 1, :c => sub - assert_kind_of Options, options + options = ParentOptions.from :a => 1, :c => sub + assert_kind_of ParentOptions, options assert_equal 1, options.a assert_nil options.b assert_kind_of SubOptions, options.c assert_equal 1, options.c.sub end def test_from_hash - options = Options.from :a => 1 - assert_kind_of Options, options + options = ParentOptions.from :a => 1 + assert_kind_of ParentOptions, options assert_equal 1, options.a assert_nil options.b end def test_from_hash_with_sub_object - options = Options.from :a => 1, :c => {:sub => 1} - assert_kind_of Options, options + options = ParentOptions.from :a => 1, :c => {:sub => 1} + assert_kind_of ParentOptions, options assert_equal 1, options.a assert_nil options.b assert_kind_of SubOptions, options.c assert_equal 1, options.c.sub end + def test_inheritance + subclass = Class.new(ParentOptions) + options = subclass.from(:c => {:sub => 'hello'}) + assert_kind_of SubOptions, options.c + assert_equal 'hello', options.c.sub + end + def test_from_deep_hash hash = {:b => 1} - options = Options.from :a => hash + options = ParentOptions.from :a => hash assert_equal 1, options.a[:b] hash[:b] = 2 assert_equal 1, options.a[:b] @@ -79,48 +100,103 @@ assert_equal 2, hash[:b] assert_equal 3, options.a[:b] end def test_from_nil - options = Options.from(nil) - assert_kind_of Options, options + options = ParentOptions.from(nil) + assert_kind_of ParentOptions, options assert_nil options.a assert_nil options.b end def test_invalid_key assert_raises NoMethodError do - Options.from :invalid => 1 + ParentOptions.from :invalid => 1 end end def test_update - options = Options.new 1 + options = ParentOptions.new 1 assert_equal 1, options.a assert_nil options.b updated = options.update :a => 2, :b => 3 assert_equal 2, options.a assert_equal 3, options.b assert_equal options, updated end def test_delete - options = Options.new 1 + options = ParentOptions.new 1 assert_equal 1, options.a assert_equal 1, options.delete(:a) assert_nil options.a end def test_merge - options = Options.new 1 + options = ParentOptions.new 1 assert_equal 1, options.a assert_nil options.b dup = options.merge :a => 2, :b => 3 assert_equal 2, dup.a assert_equal 3, dup.b assert_equal 1, options.a assert_nil options.b end -end + def test_env_access_member + e = Faraday::Env.new + assert_nil e.method + e.method = :get + assert_equal :get, e.method + end + + def test_env_access_symbol_non_member + e = Faraday::Env.new + assert_nil e[:custom] + e[:custom] = :boom + assert_equal :boom, e[:custom] + end + + def test_env_access_string_non_member + e = Faraday::Env.new + assert_nil e["custom"] + e["custom"] = :boom + assert_equal :boom, e["custom"] + end + + def test_env_fetch_ignores_false + ssl = Faraday::SSLOptions.new + ssl.verify = false + assert !ssl.fetch(:verify, true) + end + + def test_fetch_grabs_value + opt = Faraday::SSLOptions.new + opt.verify = 1 + assert_equal 1, opt.fetch(:verify, false) { |k| :blah } + end + + def test_fetch_uses_falsey_default + opt = Faraday::SSLOptions.new + assert_equal false, opt.fetch(:verify, false) { |k| :blah } + end + + def test_fetch_accepts_block + opt = Faraday::SSLOptions.new + assert_equal "yo :verify", opt.fetch(:verify) { |k| "yo #{k.inspect}"} + end + + def test_fetch_needs_a_default_if_key_is_missing + opt = Faraday::SSLOptions.new + assert_raises Faraday::Options.fetch_error_class do + opt.fetch :verify + end + end + + def test_fetch_works_with_key + opt = Faraday::SSLOptions.new + opt.verify = 1 + assert_equal 1, opt.fetch(:verify) + end +end