diff options
| author | Jon Leighton <j@jonathanleighton.com> | 2010-10-14 10:25:43 +0100 | 
|---|---|---|
| committer | Jon Leighton <j@jonathanleighton.com> | 2010-10-14 10:25:43 +0100 | 
| commit | 3fb493c2b037ffbdda5c91d66334ec6f79faa2d1 (patch) | |
| tree | e49b072103bbfe6fb6159954c786a31f44099325 /activeresource/lib/active_resource | |
| parent | 212fdd8ba9624f61421a7a950283537a3d39ac18 (diff) | |
| parent | 01ab6f961bff150d50c99f03fa3946f48ac29b17 (diff) | |
| download | rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.tar.gz rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.tar.bz2 rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.zip | |
Merge branch 'master' into nested_has_many_through
Conflicts:
	activerecord/lib/active_record/associations.rb
	activerecord/test/cases/associations/cascaded_eager_loading_test.rb
Diffstat (limited to 'activeresource/lib/active_resource')
| -rw-r--r-- | activeresource/lib/active_resource/http_mock.rb | 56 | 
1 files changed, 37 insertions, 19 deletions
| diff --git a/activeresource/lib/active_resource/http_mock.rb b/activeresource/lib/active_resource/http_mock.rb index ddd3fb1f5d..9aefde7c30 100644 --- a/activeresource/lib/active_resource/http_mock.rb +++ b/activeresource/lib/active_resource/http_mock.rb @@ -100,11 +100,11 @@ module ActiveResource        # Accepts a block which declares a set of requests and responses for the HttpMock to respond to in        # the following format: -      #  +      #        #   mock.http_method(path, request_headers = {}, body = nil, status = 200, response_headers = {}) -      #  +      #        # === Example -      #  +      #        #   @matz  = { :id => 1, :name => "Matz" }.to_xml(:root => "person")        #   ActiveResource::HttpMock.respond_to do |mock|        #     mock.post   "/people.xml",   {}, @matz, 201, "Location" => "/people/1.xml" @@ -112,65 +112,76 @@ module ActiveResource        #     mock.put    "/people/1.xml", {}, nil, 204        #     mock.delete "/people/1.xml", {}, nil, 200        #   end -      #  +      #        # Alternatively, accepts a hash of <tt>{Request => Response}</tt> pairs allowing you to generate        # these the following format: -      #  +      #        #   ActiveResource::Request.new(method, path, body, request_headers)        #   ActiveResource::Response.new(body, status, response_headers) -      #  +      #        # === Example -      #  +      #        # Request.new(:#{method}, path, nil, request_headers) -      #  +      #        #   @matz  = { :id => 1, :name => "Matz" }.to_xml(:root => "person")        #        #   create_matz      = ActiveResource::Request.new(:post, '/people.xml', @matz, {})        #   created_response = ActiveResource::Response.new("", 201, {"Location" => "/people/1.xml"})        #   get_matz         = ActiveResource::Request.new(:get, '/people/1.xml', nil)        #   ok_response      = ActiveResource::Response.new("", 200, {}) -      #  +      #        #   pairs = {create_matz => created_response, get_matz => ok_response} -      #  +      #        #   ActiveResource::HttpMock.respond_to(pairs)        #        # Note, by default, every time you call +respond_to+, any previous request and response pairs stored        # in HttpMock will be deleted giving you a clean slate to work on. -      #  +      #        # If you want to override this behaviour, pass in +false+ as the last argument to +respond_to+ -      #  +      #        # === Example -      #  +      #        #   ActiveResource::HttpMock.respond_to do |mock|        #     mock.send(:get, "/people/1", {}, "XML1")        #   end        #   ActiveResource::HttpMock.responses.length #=> 1 -      #    +      #        #   ActiveResource::HttpMock.respond_to(false) do |mock|        #     mock.send(:get, "/people/2", {}, "XML2")        #   end        #   ActiveResource::HttpMock.responses.length #=> 2 -      #  +      #        # This also works with passing in generated pairs of requests and responses, again, just pass in false        # as the last argument: -      #  +      #        # === Example -      #  +      #        #   ActiveResource::HttpMock.respond_to do |mock|        #     mock.send(:get, "/people/1", {}, "XML1")        #   end        #   ActiveResource::HttpMock.responses.length #=> 1 -      #  +      #        #   get_matz         = ActiveResource::Request.new(:get, '/people/1.xml', nil)        #   ok_response      = ActiveResource::Response.new("", 200, {}) -      #  +      #        #   pairs = {get_matz => ok_response}        #        #   ActiveResource::HttpMock.respond_to(pairs, false)        #   ActiveResource::HttpMock.responses.length #=> 2 +      # +      #   # If you add a response with an existing request, it will be replaced +      # +      #   fail_response      = ActiveResource::Response.new("", 404, {}) +      #   pairs = {get_matz => fail_response} +      # +      #   ActiveResource::HttpMock.respond_to(pairs, false) +      #   ActiveResource::HttpMock.responses.length #=> 2 +      #        def respond_to(*args) #:yields: mock          pairs = args.first || {}          reset! if args.last.class != FalseClass + +        delete_responses_to_replace pairs.to_a          responses.concat pairs.to_a          if block_given?            yield Responder.new(responses) @@ -179,6 +190,13 @@ module ActiveResource          end        end +      def delete_responses_to_replace(new_responses) +        new_responses.each{|nr| +          request_to_remove = nr[0] +          @@responses = responses.delete_if{|r| r[0] == request_to_remove} +        } +      end +        # Deletes all logged requests and responses.        def reset!          requests.clear | 
