Module: Bearcat::SpecHelpers
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/bearcat/spec_helpers.rb
Overview
Bearcat RSpec Helpers Can be included in your spec_helper.rb file by using:
-
‘require ’bearcat/spec_helpers’‘
And
-
‘config.include Bearcat::SpecHelpers`
This helper requires ‘gem ’method_source’‘ in your test group
Constant Summary collapse
- SOURCE_REGEX =
/(?<method>get|post|delete|put)\((?<quote>\\?('|"))(?<url>.*)\k<quote>/
Instance Method Summary collapse
-
#stub_bearcat(endpoint, prefix: nil, method: :auto, **kwargs) ⇒ Object
Helper method to Stub Bearcat requests.
Instance Method Details
#stub_bearcat(endpoint, prefix: nil, method: :auto, **kwargs) ⇒ Object
Helper method to Stub Bearcat requests. Automagically parses the Bearcat method source to determine the correct URL to stub. Accepts optional keyword parameters to interpolate specific values into the URL. Returns a mostly-normal Webmock stub (:to_return has been overridden to allow :body to be set to a Hash)
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/bearcat/spec_helpers.rb', line 18 def stub_bearcat(endpoint, prefix: nil, method: :auto, **kwargs) cfg = _bearcat_resolve_config(endpoint, kwargs, method: method) url = Regexp.escape(_bearcat_resolve_prefix(prefix)) + cfg[:url] url += "?" if url.end_with?('/') stub = stub_request(cfg[:method], Regexp.new(url)) # Override the to_return method to accept a Hash as body: stub.define_singleton_method(:to_return, ->(*resps, &blk) { if blk super do |*args| resp = blk.call(*args) resp[:headers] ||= {} resp[:headers]["Content-Type"] ||= "application/json" resp[:body] = resp[:body].to_json resp end else resps.map do |resp| resp[:headers] ||= {} resp[:headers]["Content-Type"] ||= "application/json" resp[:body] = resp[:body].to_json end super(*resps) end }) stub end |