Module: Intermodal::RSpec::RequestValidations::ClassMethods
- Defined in:
- lib/intermodal/rspec/requests/request_validations.rb
Instance Method Summary collapse
-
#expect_request_invalid(message, opts = {}, &additional_examples) ⇒ Object
This macro expects the following to be defined: let(:valid_payload) { request_payload that would succeed }.
Instance Method Details
#expect_request_invalid(message, opts = {}, &additional_examples) ⇒ Object
This macro expects the following to be defined: let(:valid_payload) { request_payload that would succeed }
You then pass a override hash and the expected response code, usually a 400 Bad Request or 422 Unprocessible Entity
In overrides, if you pass a callable object such as a lambda or a proc, then it will be called at test time before merging into the request payload.
Example:
overrides: { apple: -> { tree.apples.sample } }
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/intermodal/rspec/requests/request_validations.rb', line 19 def expect_request_invalid(, opts={}, &additional_examples) _status = opts[:status] || 422 _overrides = opts[:overrides] or raise 'Must pass overrides: parameter' context "when #{}" do let(:request_payload) { attributes.merge(overrides) } let(:overrides) { Hash[_overrides.map(&eval_hash)] } let(:eval_hash) { ->(x) { [x[0].to_s, maybe_call.(x[1]) ] } } let(:maybe_call) { ->(x) { x.respond_to?(:call) ? x.call : x } } expects_status _status instance_eval(&additional_examples) if additional_examples end end |