class Fake::RequestHandler

Attributes

body[RW]
responses[R]

Public Class Methods

new(method, path) click to toggle source

Creates handler for http request method: :get, :post, :put etc path: Path of the request like '/home/something'

# File lib/fake/request_handler.rb, line 13
def initialize(method, path)
  @method = method
  uri = URI.parse(path)
  @params = parse_params(uri)
  @path = Path.new(uri.path)
  @responses = InfiniteQueue.new
  @body = nil
end

Public Instance Methods

call(request) click to toggle source
# File lib/fake/request_handler.rb, line 22
def call(request)
  if should_serve?(request)
    current_response = @responses.next
    raise "FAKE service: No response set for request #{presentation}" if current_response.nil?
    current_response.evaluate()
    Rack::Response.new([current_response.body], status=current_response.status, header=current_response.headers)
  end
end

Private Instance Methods

parse_params(uri) click to toggle source
# File lib/fake/request_handler.rb, line 43
def parse_params(uri)
  if uri.query
    Rack::Utils.parse_nested_query(uri.query)
  else
    {}
  end
end
presentation() click to toggle source
# File lib/fake/request_handler.rb, line 51
def presentation
  @path
end
should_serve?(request) click to toggle source
# File lib/fake/request_handler.rb, line 32
def should_serve?(request)
  should_serve = @path.eql?(request.path) && request.request_method.eql?(@method.to_s.upcase)
  if should_serve && @params != {}
    should_serve = request.params == @params
  end
  if should_serve && @body != nil
    should_serve = @body == request.body_string
  end
  should_serve
end