lib/rspec/request_describer.rb in rspec-request_describer-0.1.1 vs lib/rspec/request_describer.rb in rspec-request_describer-0.2.0

- old
+ new

@@ -7,67 +7,69 @@ Host HTTPS ) SUPPORTED_METHODS = %w( + DELETE GET + PATCH POST PUT - PATCH - DELETE ) - def self.included(base) - base.instance_eval do - subject do - send_request - end + class << self + def included(base) + base.instance_eval do + subject do + send_request + end - if (ActionDispatch::Integration::Session.instance_method(:process_with_kwargs) rescue false) let(:send_request) do - send http_method, path, params: request_body, headers: env + process( + http_method, + path, + headers: env, + params: request_body, + ) end - else - let(:send_request) do - send http_method, path, request_body, env + + let(:request_body) do + if headers.any? { |key, value| key.downcase == "content-type" && value == "application/json" } + params.to_json + else + params + end end - end - let(:request_body) do - if headers.any? { |key, value| key.downcase == "content-type" && value == "application/json" } - params.to_json - else - params + let(:headers) do + {} end - end - let(:headers) do - {} - end + let(:params) do + {} + end - let(:params) do - {} - end + let(:env) do + headers.inject({}) do |result, (key, value)| + key = "HTTP_" + key unless RESERVED_HEADER_NAMES.include?(key) + key = key.gsub("-", "_").upcase + result.merge(key => value) + end + end - let(:env) do - headers.inject({}) do |result, (key, value)| - key = "HTTP_" + key unless RESERVED_HEADER_NAMES.include?(key) - key = key.gsub("-", "_").upcase - result.merge(key => value) + let(:endpoint_segments) do + current_example = ::RSpec.respond_to?(:current_example) ? ::RSpec.current_example : example + current_example.full_description.match(/(#{::Regexp.union(SUPPORTED_METHODS)}) (\S+)/).to_a end - end - let(:endpoint_segments) do - current_example = RSpec.respond_to?(:current_example) ? RSpec.current_example : example - current_example.full_description.match(/(#{SUPPORTED_METHODS.join("|")}) (\S+)/).to_a - end + # @return [Symbol] e.g. `:get` + let(:http_method) do + endpoint_segments[1].downcase.to_sym + end - let(:http_method) do - endpoint_segments[1].downcase - end - - let(:path) do - endpoint_segments[2].gsub(/:(\w+[!?=]?)/) { send($1) } + let(:path) do + endpoint_segments[2].gsub(/:(\w+[!?=]?)/) { send($1) } + end end end end end end