class Pacto::Stubs::WebMockAdapter
Public Class Methods
new()
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 6 def initialize register_hooks end
Public Instance Methods
process_hooks(request_signature, response)
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 28 def process_hooks(request_signature, response) WebMockHelper.generate(request_signature, response) if Pacto.generating? contracts = Pacto.contracts_for request_signature Pacto.configuration.hook.process contracts, request_signature, response WebMockHelper.validate(request_signature, response) if Pacto.validating? end
reset!()
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 23 def reset! WebMock.reset! WebMock.reset_callbacks end
stub_request!(request, response)
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 10 def stub_request!(request, response) uri_pattern = UriPattern.for(request) stub = WebMock.stub_request(request.method, uri_pattern) stub.request_pattern.with(strict_details(request)) if Pacto.configuration.strict_matchers stub.to_return( :status => response.status, :headers => response.headers, :body => format_body(response.body) ) end
Private Instance Methods
format_body(body)
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 45 def format_body(body) if body.is_a?(Hash) || body.is_a?(Array) body.to_json else body end end
register_hooks()
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 39 def register_hooks WebMock.after_request do |request_signature, response| process_hooks request_signature, response end end
strict_details(request)
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 53 def strict_details(request) {}.tap do |details| unless request.params.empty? details[webmock_params_key(request)] = request.params end unless request.headers.empty? details[:headers] = request.headers end end end
webmock_params_key(request)
click to toggle source
# File lib/pacto/stubs/webmock_adapter.rb, line 64 def webmock_params_key(request) request.method == :get ? :query : :body end