diff options
Diffstat (limited to 'spec/support/matchers/request_urgency_matcher.rb')
-rw-r--r-- | spec/support/matchers/request_urgency_matcher.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/spec/support/matchers/request_urgency_matcher.rb b/spec/support/matchers/request_urgency_matcher.rb new file mode 100644 index 00000000000..d3c5093719e --- /dev/null +++ b/spec/support/matchers/request_urgency_matcher.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +require 'spec_helper' + +module RequestUrgencyMatcher + RSpec::Matchers.define :have_request_urgency do |request_urgency| + match do |_actual| + if controller_instance = request.env["action_controller.instance"] + controller_instance.urgency.name == request_urgency + elsif endpoint = request.env['api.endpoint'] + urgency = endpoint.options[:for].try(:urgency_for_app, endpoint) + urgency.name == request_urgency + else + raise 'neither a controller nor a request spec' + end + end + + failure_message do |_actual| + if controller_instance = request.env["action_controller.instance"] + "request urgency #{controller_instance.urgency.name} is set, \ + but expected to be #{request_urgency}".squish + elsif endpoint = request.env['api.endpoint'] + urgency = endpoint.options[:for].try(:urgency_for_app, endpoint) + "request urgency #{urgency.name} is set, \ + but expected to be #{request_urgency}".squish + end + end + end +end |