class WebMock::StubRegistry

Attributes

request_stubs[RW]

Public Class Methods

new() click to toggle source
# File lib/webmock/stub_registry.rb, line 8
def initialize
  reset!
end

Public Instance Methods

global_stubs() click to toggle source
# File lib/webmock/stub_registry.rb, line 12
def global_stubs
  @global_stubs ||= []
end
register_global_stub(&block) click to toggle source
# File lib/webmock/stub_registry.rb, line 20
def register_global_stub(&block)
  # This hash contains the responses returned by the block,
  # keyed by the exact request (using the object_id).
  # That way, there's no race condition in case #to_return
  # doesn't run immediately after stub.with.
  responses = {}

  stub = ::WebMock::RequestStub.new(:any, /.*/).with { |request|
    responses[request.object_id] = block.call(request)
  }.to_return(lambda { |request| responses.delete(request.object_id) })

  global_stubs.push stub
end
register_request_stub(stub) click to toggle source
# File lib/webmock/stub_registry.rb, line 34
def register_request_stub(stub)
  request_stubs.insert(0, stub)
  stub
end
registered_request?(request_signature) click to toggle source
# File lib/webmock/stub_registry.rb, line 45
def registered_request?(request_signature)
  request_stub_for(request_signature)
end
remove_request_stub(stub) click to toggle source
# File lib/webmock/stub_registry.rb, line 39
def remove_request_stub(stub)
  if not request_stubs.delete(stub)
    raise "Request stub \n\n #{stub.to_s} \n\n is not registered."
  end
end
reset!() click to toggle source
# File lib/webmock/stub_registry.rb, line 16
def reset!
  self.request_stubs = []
end
response_for_request(request_signature) click to toggle source
# File lib/webmock/stub_registry.rb, line 49
def response_for_request(request_signature)
  stub = request_stub_for(request_signature)
  stub ? evaluate_response_for_request(stub.response, request_signature) : nil
end

Private Instance Methods

evaluate_response_for_request(response, request_signature) click to toggle source
# File lib/webmock/stub_registry.rb, line 62
def evaluate_response_for_request(response, request_signature)
  response.dup.evaluate(request_signature)
end
request_stub_for(request_signature) click to toggle source
# File lib/webmock/stub_registry.rb, line 56
def request_stub_for(request_signature)
  (global_stubs + request_stubs).detect { |registered_request_stub|
    registered_request_stub.request_pattern.matches?(request_signature)
  }
end