diff --git a/lib/httparty/response.rb b/lib/httparty/response.rb index 9d8f7e2..fed575a 100644 --- a/lib/httparty/response.rb +++ b/lib/httparty/response.rb @@ -3,7 +3,7 @@ module HTTParty attr_accessor :body, :code, :headers attr_reader :delegate - def initialize(delegate, body, code, headers) + def initialize(delegate, body, code, headers={}) @delegate = delegate @body = body @code = code diff --git a/spec/httparty/response_spec.rb b/spec/httparty/response_spec.rb new file mode 100644 index 0000000..aa135d1 --- /dev/null +++ b/spec/httparty/response_spec.rb @@ -0,0 +1,53 @@ +require File.join(File.dirname(__FILE__), '..', 'spec_helper') + +describe HTTParty::Response do + describe "initialization" do + before do + @response_object = {'foo' => 'bar'} + @body = "{foo:'bar'}" + @code = 200 + @response = HTTParty::Response.new(@response_object, @body, @code) + end + + it "should set delegate" do + @response.delegate.should == @response_object + end + + it "should set body" do + @response.body.should == @body + end + + it "should set code" do + @response.code.should == @code + end + end + + it "should be able to set headers during initialization" do + response = HTTParty::Response.new({'foo' => 'bar'}, "{foo:'bar'}", 200, {'foo' => 'bar'}) + response.headers.should == {'foo' => 'bar'} + end + + it "should send missing methods to delegate" do + response = HTTParty::Response.new({'foo' => 'bar'}, "{foo:'bar'}", 200) + response['foo'].should == 'bar' + end + + it "should be able to iterate delegate if it is array" do + response = HTTParty::Response.new([{'foo' => 'bar'}, {'foo' => 'baz'}], "[{foo:'bar'}, {foo:'baz'}]", 200) + response.size.should == 2 + lambda { + response.each { |item| } + }.should_not raise_error + end + + xit "should allow hashes to be accessed with dot notation" do + response = HTTParty::Response.new({'foo' => 'bar'}, "{foo:'bar'}", 200) + response.foo.should == 'bar' + end + + xit "should allow nested hashes to be accessed with dot notation" do + response = HTTParty::Response.new({'foo' => {'bar' => 'baz'}}, "{foo: {bar:'baz'}}", 200) + response.foo.should == {'bar' => 'baz'} + response.foo.bar.should == 'baz' + end +end \ No newline at end of file