1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
# frozen_string_literal: true
RSpec.describe HTTP::Options, "merge" do
let(:opts) { HTTP::Options.new }
it "supports a Hash" do
old_response = opts.response
expect(opts.merge(:response => :body).response).to eq(:body)
expect(opts.response).to eq(old_response)
end
it "supports another Options" do
merged = opts.merge(HTTP::Options.new(:response => :body))
expect(merged.response).to eq(:body)
end
it "merges as excepted in complex cases" do
# FIXME: yuck :(
foo = HTTP::Options.new(
:response => :body,
:params => {:baz => "bar"},
:form => {:foo => "foo"},
:body => "body-foo",
:json => {:foo => "foo"},
:headers => {:accept => "json", :foo => "foo"},
:proxy => {},
:features => {}
)
bar = HTTP::Options.new(
:response => :parsed_body,
:persistent => "https://www.googe.com",
:params => {:plop => "plip"},
:form => {:bar => "bar"},
:body => "body-bar",
:json => {:bar => "bar"},
:keep_alive_timeout => 10,
:headers => {:accept => "xml", :bar => "bar"},
:timeout_options => {:foo => :bar},
:ssl => {:foo => "bar"},
:proxy => {:proxy_address => "127.0.0.1", :proxy_port => 8080}
)
expect(foo.merge(bar).to_hash).to eq(
:response => :parsed_body,
:timeout_class => described_class.default_timeout_class,
:timeout_options => {:foo => :bar},
:params => {:plop => "plip"},
:form => {:bar => "bar"},
:body => "body-bar",
:json => {:bar => "bar"},
:persistent => "https://www.googe.com",
:keep_alive_timeout => 10,
:ssl => {:foo => "bar"},
:headers => {"Foo" => "foo", "Accept" => "xml", "Bar" => "bar"},
:proxy => {:proxy_address => "127.0.0.1", :proxy_port => 8080},
:follow => nil,
:socket_class => described_class.default_socket_class,
:nodelay => false,
:ssl_socket_class => described_class.default_ssl_socket_class,
:ssl_context => nil,
:cookies => {},
:encoding => nil,
:features => {}
)
end
end
|