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