class Object

Public Instance Methods

handle_error(api_request) click to toggle source
# File lib/my_api_client/rspec/matchers/be_handled_as_an_error.rb, line 68
def handle_error(api_request)
  api_request.call
rescue MyApiClient::Error => e
  e
else
  nil
end
init() click to toggle source

rubocop:disable Metrics/AbcSize

# File lib/my_api_client/rspec/matchers/be_handled_as_an_error.rb, line 49
def init
  disable_logging
  response = dummy_response(
    status: expected_response[:status_code] || 200,
    headers: expected_response[:headers] || {},
    body: expected_response[:body] || nil
  )
  @sawyer = instance_double(Sawyer::Agent, call: response)
  allow(Sawyer::Agent).to receive(:new).and_return(sawyer)
  allow(MyApiClient::Sleeper).to receive(:call)
end
request_line(method, url, query = nil) click to toggle source
# File lib/my_api_client/rspec/matchers/request_to.rb, line 52
def request_line(method, url, query = nil)
  url += "?#{query.to_query}" if query.present?
  "#{method.upcase} #{url}"
end
safe_execution(api_request) click to toggle source

To ignore error handling

# File lib/my_api_client/rspec/matchers/request_to.rb, line 46
def safe_execution(api_request)
  api_request.call
rescue MyApiClient::Error
  nil
end
set_validation_for_retry_count() click to toggle source

rubocop:enable Metrics/AbcSize

# File lib/my_api_client/rspec/matchers/be_handled_as_an_error.rb, line 62
def set_validation_for_retry_count
  return if retry_count.nil?

  expect(sawyer).to receive(:call).exactly(retry_count + 1).times
end