class Koine::RestClient::RspecMockClient

mock client

Attributes

client_mock[R]

Public Class Methods

new(rspec, response_parser: ResponseParser.new) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 9
def initialize(rspec, response_parser: ResponseParser.new)
  @client_mock = rspec.instance_double(Koine::RestClient::Client)
  @builder = MockFactory.new(rspec, self)
  @collected = []
  @response_parser = response_parser
  @error_handler = proc do |error|
    raise error
  end
end

Public Instance Methods

async() { |self| ... } click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 47
def async
  @async = true
  yield(self)
  @async = false

  responses = @collected.dup
  @collected.clear
  responses.map(&:parsed_response)
end
delete(*args, &block) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 43
def delete(*args, &block)
  parse(@client_mock.delete(*args), &block)
end
get(*args, &block) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 27
def get(*args, &block)
  parse(@client_mock.get(*args), &block)
end
mock() { |builder| ... } click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 23
def mock
  yield(@builder)
end
on_error(&block) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 19
def on_error(&block)
  @error_handler = block
end
patch(*args, &block) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 39
def patch(*args, &block)
  parse(@client_mock.patch(*args), &block)
end
post(*args, &block) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 31
def post(*args, &block)
  parse(@client_mock.post(*args), &block)
end
put(*args, &block) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 35
def put(*args, &block)
  parse(@client_mock.put(*args), &block)
end

Private Instance Methods

parse(response, &block) click to toggle source
# File lib/koine/rest_client/rspec_mock_client.rb, line 59
def parse(response, &block)
  @response_parser.parse(response, &block).tap do |_parsed|
    if @async
      @collected << response
    end
  end
rescue StandardError => exception
  unless @async
    raise exception
  end

  @collected << MockResponse.new.tap do |new_response|
    new_response.parsed_response = @error_handler.call(exception)
  end
end