module Fictium::RSpec::Autocomplete::Params
Constants
- IGNORED_PATH_PARAMETERS
- REQUEST_SECTIONS
Public Class Methods
extract_from_request(action, request)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 13 def extract_from_request(action, request) action.method = request.method.downcase extract_path(action, request) REQUEST_SECTIONS.each do |section| action.params[section] ||= ActiveSupport::HashWithIndifferentAccess.new send(:"parse_request_#{section}", action.params[section], action, request) end end
extract_from_response(example, response)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 22 def extract_from_response(example, response) example.headers ||= ActiveSupport::HashWithIndifferentAccess.new response.headers.each do |name, value| next unless valid_header?(name) example.headers[name] ||= {} example.headers[name].merge!( example: value ) end end
Private Class Methods
extract_path(action, request)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 36 def extract_path(action, request) return unless action.path.nil? mapped_controllers = transform_path(request) full_path = CGI.unescape(url_for(**mapped_controllers.merge(only_path: true))) action.path = full_path.sub(action.resource.base_path || '', '') rescue ActionController::UrlGenerationError action.path = '' end
ignored_header_groups()
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 101 def ignored_header_groups Fictium.configuration.ignored_header_groups end
parse_request_header(params, _action, request)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 66 def parse_request_header(params, _action, request) request.headers.to_h.each do |name, value| next unless valid_header?(name) params[name] ||= {} params[name].merge!( example: value ) end end
parse_request_path(params, _action, request)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 77 def parse_request_path(params, _action, request) request.path_parameters.except(*IGNORED_PATH_PARAMETERS).each do |name, value| params[name] ||= {} params[name].merge!( example: value ) end end
parse_request_query(params, _action, request)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 57 def parse_request_query(params, _action, request) request.query_parameters.each do |key, value| params[key] ||= {} params[key].merge!( example: value ) end end
transform_path(request)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 46 def transform_path(request) {}.tap do |result| request.path_parameters.except(*IGNORED_PATH_PARAMETERS).each do |key, _| result[key] = "{#{key}}" end request.path_parameters.slice(*IGNORED_PATH_PARAMETERS).each do |key, value| result[key] = value end end end
valid_header?(name)
click to toggle source
# File lib/fictium/rspec/autocomplete/params.rb, line 95 def valid_header?(name) return false if ignored_header_groups.any? { |group| name.downcase.start_with?(group) } !Fictium.configuration.ignored_header_values.include?(name.downcase) end