class Shoulda::Matchers::ActionController::StrongParametersMatcher
Attributes
action[R]
context[R]
controller[R]
double_collection[R]
expected_permitted_params[R]
request_params[R]
stubbed_params[W]
verb[R]
Public Class Methods
new(expected_permitted_params)
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 20 def initialize(expected_permitted_params) @action = nil @verb = nil @request_params = {} @expected_permitted_params = expected_permitted_params set_double_collection end
Public Instance Methods
description()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 40 def description "permit #{verb.upcase} ##{action} to receive parameters #{param_names_as_sentence}" end
failure_message()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 55 def failure_message "Expected controller to permit #{unpermitted_params.to_sentence}, but it did not." end
Also aliased as: failure_message_for_should
failure_message_when_negated()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 60 def failure_message_when_negated "Expected controller not to permit #{verified_permitted_params.to_sentence}, but it did." end
Also aliased as: failure_message_for_should_not
for(action, options = {})
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 28 def for(action, options = {}) @action = action @verb = options.fetch(:verb, default_verb) @request_params = options.fetch(:params, {}) self end
in_context(context)
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 35 def in_context(context) @context = context self end
matches?(controller)
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 44 def matches?(controller) @controller = controller ensure_action_and_verb_present! Doublespeak.with_doubles_activated do context.__send__(verb, action, request_params) end unpermitted_params.empty? end
Private Instance Methods
actual_permitted_params()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 78 def actual_permitted_params double_collection.calls_to(:permit).inject([]) do |all_param_names, call| all_param_names + call.args end.flatten end
default_verb()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 106 def default_verb case action when :create then :post when :update then RailsShim.verb_for_update end end
ensure_action_and_verb_present!()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 96 def ensure_action_and_verb_present! if action.blank? raise ActionNotDefinedError end if verb.blank? raise VerbNotDefinedError end end
param_names_as_sentence()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 113 def param_names_as_sentence expected_permitted_params.map(&:inspect).to_sentence end
permit_called?()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 84 def permit_called? actual_permitted_params.any? end
set_double_collection()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 70 def set_double_collection @double_collection = Doublespeak.register_double_collection(::ActionController::Parameters) @double_collection.register_stub(:require).to_return { |params| params } @double_collection.register_proxy(:permit) end
unpermitted_params()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 88 def unpermitted_params expected_permitted_params - actual_permitted_params end
verified_permitted_params()
click to toggle source
# File lib/shoulda/matchers/action_controller/strong_parameters_matcher.rb, line 92 def verified_permitted_params expected_permitted_params & actual_permitted_params end