class Pipekit::WebMock::API::StubRequest

Public Class Methods

new(resource) click to toggle source
# File lib/pipekit/webmock/api.rb, line 41
def initialize(resource)
  resource_name = ResourceName.new(resource)
  @request = Pipekit::Request.new(resource_name)
end

Public Instance Methods

stub_request_and_response(action, params, response) click to toggle source
# File lib/pipekit/webmock/api.rb, line 46
def stub_request_and_response(action, params, response)
  request = self.send("stub_#{action}_request", params)
  request.and_return(status: 200, body: {"data" => response, "success" => true}.to_json) if response
  request
end

Private Instance Methods

api_token_param() click to toggle source
# File lib/pipekit/webmock/api.rb, line 111
def api_token_param
  "api_token=#{Config.fetch(:api_token)}"
end
body_from(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 96
def body_from(params)
  HTTParty::HashConversions.to_params(@request.parse_body(params))
end
pagination_params() click to toggle source
# File lib/pipekit/webmock/api.rb, line 100
def pagination_params
  {
    limit: @request.pagination_limit,
    start: 0
  }
end
resource_uri(id = "") click to toggle source
# File lib/pipekit/webmock/api.rb, line 92
def resource_uri(id = "")
  "#{Pipekit::Request::PIPEDRIVE_URL}#{@request.uri(id)}?#{api_token_param}"
end
start() click to toggle source
# File lib/pipekit/webmock/api.rb, line 107
def start
  0
end
stub_create_request(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 54
def stub_create_request(params)
  stub_request(:post, resource_uri).with(body: body_from(params))
end
stub_find_by_email_request(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 82
def stub_find_by_email_request(params)
  email = params.delete(:email)
  stub_request(:get, "#{resource_uri("find")}&#{body_from(pagination_params)}&term=#{email}&search_by_email=1")
end
stub_find_by_name_request(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 87
def stub_find_by_name_request(params)
  name = params.delete(:name)
  stub_request(:get, "#{resource_uri("find")}&#{body_from(pagination_params)}&term=#{name}")
end
stub_find_by_person_id_request(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 77
def stub_find_by_person_id_request(params)
  person_id = params.delete(:person_id)
  stub_request(:get, "#{Pipekit::Request::PIPEDRIVE_URL}/persons/#{person_id}/deals?#{api_token_param}&#{body_from(pagination_params)}")
end
stub_get_request(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 63
def stub_get_request(params)
  id = params.delete(:id) || params.delete("id")
  uri = "#{resource_uri(id)}&#{body_from(params)}&#{body_from(pagination_params)}"
  stub_request(:get, uri)
end
stub_search_request(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 69
def stub_search_request(params)
  field = params.keys.first
  value = params[field]
  query = @request.search_by_field_query(field, value).merge(pagination_params)
  uri = "#{Pipekit::Request::PIPEDRIVE_URL}/searchResults/field?#{api_token_param}&#{body_from(query)}"
  stub_request(:get, uri)
end
stub_update_request(params) click to toggle source
# File lib/pipekit/webmock/api.rb, line 58
def stub_update_request(params)
  id = params.delete(:id) || params.delete("id")
  stub_request(:put, resource_uri(id)).with(body: body_from(params))
end