Class: WebMock::StubRegistry

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/webmock/stub_registry.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeStubRegistry

Returns a new instance of StubRegistry.



8
9
10
# File 'lib/webmock/stub_registry.rb', line 8

def initialize
  reset!
end

Instance Attribute Details

#request_stubsObject

Returns the value of attribute request_stubs.



6
7
8
# File 'lib/webmock/stub_registry.rb', line 6

def request_stubs
  @request_stubs
end

Instance Method Details

#global_stubsObject



12
13
14
# File 'lib/webmock/stub_registry.rb', line 12

def global_stubs
  @global_stubs ||= []
end

#register_global_stub(&block) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
# 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] = yield(request)
  }.to_return(lambda { |request| responses.delete(request.object_id) })

  global_stubs.push stub
end

#register_request_stub(stub) ⇒ Object



34
35
36
37
# File 'lib/webmock/stub_registry.rb', line 34

def register_request_stub(stub)
  request_stubs.insert(0, stub)
  stub
end

#registered_request?(request_signature) ⇒ Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/webmock/stub_registry.rb', line 45

def registered_request?(request_signature)
  request_stub_for(request_signature)
end

#remove_request_stub(stub) ⇒ Object



39
40
41
42
43
# 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!Object



16
17
18
# File 'lib/webmock/stub_registry.rb', line 16

def reset!
  self.request_stubs = []
end

#response_for_request(request_signature) ⇒ Object



49
50
51
52
# 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