module Fictium::RSpec::Autocomplete::Example

Public Class Methods

process_http_response(example, response) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 6
def process_http_response(example, response)
  example.response ||= {}
  example.response.merge!(
    status: response.status,
    body: response.body,
    content_type: response.media_type,
    header: filter_header(response.header.to_h)
  )
  process_http_request(example, response.request)
  return unless example.default?

  autocomplete_params.extract_from_response(example, response)
end

Private Class Methods

autocomplete_params() click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 22
def autocomplete_params
  Fictium::RSpec::Autocomplete::Params
end
extract_method(example, request) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 45
def extract_method(example, request)
  action = example.action
  action.method = request.method.downcase.to_sym if action.method.blank?
end
filter_header(header) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 50
def filter_header(header)
  valid_keys = header.keys.select { |name| valid_header?(name) }
  header.slice(*valid_keys).transform_keys do |key|
    (key.start_with?('HTTP_') ? key.sub('HTTP_', '') : key).sub('_', '-')
  end
end
ignored_header_groups() click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 70
def ignored_header_groups
  Fictium.configuration.ignored_header_groups
end
out_of_excluded_headers?(name) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 66
def out_of_excluded_headers?(name)
  Fictium.configuration.ignored_header_values.exclude?(name)
end
out_of_header_group?(name) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 62
def out_of_header_group?(name)
  ignored_header_groups.none? { |group| name.start_with?(group) }
end
process_base_request(request) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 35
def process_base_request(request)
  {
    content_type: request.content_type,
    body: request.body.string,
    header: filter_header(request.headers.to_h),
    path_parameters: request.path_parameters.except(:controller, :action),
    query_parameters: request.query_parameters
  }
end
process_http_request(example, request) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 26
def process_http_request(example, request)
  example.request ||= {}
  example.request.merge!(process_base_request(request))
  extract_method(example, request)
  return unless example.default?

  autocomplete_params.extract_from_request(example.action, request)
end
valid_header?(name) click to toggle source
# File lib/fictium/rspec/autocomplete/example.rb, line 57
def valid_header?(name)
  downcase_name = name.downcase
  out_of_header_group?(downcase_name) && out_of_excluded_headers?(downcase_name)
end