Module: HttpDecoy::RSpec::ClassMethods

Defined in:
lib/http_decoy/rspec.rb

Instance Method Summary collapse

Instance Method Details

#_http_decoy_register(name, route_map) ⇒ Object

Internal: register before/after hooks for a pre-built RouteMap. Called by both the inline macro and Definition#rspec_helpers.



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/http_decoy/rspec.rb', line 62

def _http_decoy_register(name, route_map)
  before(:each) do
    server = Server.new(route_map)
    server.start
    stub = WebMockIntegration.setup(server)

    @_http_decoy_servers       ||= {}
    @_http_decoy_webmock_stubs ||= {}
    @_http_decoy_servers[name]       = server
    @_http_decoy_webmock_stubs[name] = stub
  end

  after(:each) do
    server = @_http_decoy_servers&.[](name)
    stub   = @_http_decoy_webmock_stubs&.[](name)
    WebMockIntegration.teardown(stub)
    server&.stop
  end
end

#fake_server(name) ⇒ Object

Class-level macro. Evaluates the block into a RouteMap once at class-load time, then registers before/after hooks for per-example server lifecycle.



54
55
56
57
58
# File 'lib/http_decoy/rspec.rb', line 54

def fake_server(name, &)
  route_map = RouteMap.new
  route_map.instance_eval(&)
  _http_decoy_register(name, route_map)
end