lib/api_resource/mocks.rb in api_resource-0.6.20 vs lib/api_resource/mocks.rb in api_resource-0.6.21

- old
+ new

@@ -181,10 +181,14 @@ # set the normalized path, format and query string @path, @query = path.split("?") @path, @format = @path.split(".") + if opts[:body].present? && !opts[:body].is_a?(String) + raise "#{opts[:body]} must be passed as a String" + end + # if we have params, it is a MockRequest definition if opts[:params] @params = opts[:params] # otherwise, we need to check either the query string or the body # depending on the http verb @@ -243,49 +247,45 @@ class Connection cattr_accessor :requests self.requests = [] - # body? methods - { true => %w(post put get), - false => %w(delete head) }.each do |has_body, methods| - methods.each do |method| - # def post(path, body, headers) - # request = ApiResource::Request.new(:post, path, body, headers) - # self.class.requests << request - # if response = LifebookerClient::Mocks.find_response(request) - # response - # else - # raise InvalidRequestError.new("Could not find a response - # recorded for #{request.to_s} - Responses recorded are: - - # #{inspect_responses}") - # end - # end - instance_eval <<-EOE, __FILE__, __LINE__ + 1 - def #{method}(path, #{'body, ' if has_body}headers) - opts = {:headers => headers} - #{"opts[:body] = body" if has_body} - request = MockRequest.new(:#{method}, path, opts) - self.requests << request - if response = Mocks.find_response(request) - response[:response].tap{|resp| - resp.generate_response( - request.params - .with_indifferent_access - .merge(response[:params].with_indifferent_access) - ) - } - else - raise ApiResource::ResourceNotFound.new( - MockResponse.new({}, {:headers => {"Content-type" => "application/json"}, :status_code => 404}), - :message => "\nCould not find a response recorded for \#{request.pretty_inspect}\n" + - "Potential Responses Are:\n" + - "\#{Array.wrap(Mocks.responses_for_path(request.path)[:responses]).collect(&:first).pretty_inspect}" + %w(delete get head post put).each do |method| + # def post(path, body, headers) + # request = ApiResource::Request.new(:post, path, body, headers) + # self.class.requests << request + # if response = LifebookerClient::Mocks.find_response(request) + # response + # else + # raise InvalidRequestError.new("Could not find a response + # recorded for #{request.to_s} - Responses recorded are: - + # #{inspect_responses}") + # end + # end + instance_eval <<-EOE, __FILE__, __LINE__ + 1 + def #{method}(path, body, headers) + opts = {:headers => headers} + opts[:body] = body + request = MockRequest.new(:#{method}, path, opts) + self.requests << request + if response = Mocks.find_response(request) + response[:response].tap{|resp| + resp.generate_response( + request.params + .with_indifferent_access + .merge(response[:params].with_indifferent_access) ) - end + } + else + raise ApiResource::ResourceNotFound.new( + MockResponse.new({}, {:headers => {"Content-type" => "application/json"}, :status_code => 404}), + :message => "\nCould not find a response recorded for \#{request.pretty_inspect}\n" + + "Potential Responses Are:\n" + + "\#{Array.wrap(Mocks.responses_for_path(request.path)[:responses]).collect(&:first).pretty_inspect}" + ) end - EOE - end + end + EOE end end end end \ No newline at end of file