Class: Shoulda::Callback::Matchers::ActiveModel::CallbackMatcher
- Inherits:
-
Object
- Object
- Shoulda::Callback::Matchers::ActiveModel::CallbackMatcher
- Defined in:
- lib/shoulda/callback/matchers/active_model.rb
Overview
:nodoc:
Instance Method Summary collapse
- #description ⇒ Object
- #failure_message ⇒ Object
-
#initialize(method) ⇒ CallbackMatcher
constructor
A new instance of CallbackMatcher.
- #is_callback?(subject, callback) ⇒ Boolean
- #is_callback_object?(subject, callback) ⇒ Boolean
- #is_callback_symbol?(subject, callback) ⇒ Boolean
- #matches?(subject) ⇒ Boolean
- #negative_failure_message ⇒ Object
- #on(optional_lifecycle) ⇒ Object
Constructor Details
#initialize(method) ⇒ CallbackMatcher
Returns a new instance of CallbackMatcher.
26 27 28 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 26 def initialize(method) @method = method end |
Instance Method Details
#description ⇒ Object
98 99 100 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 98 def description "callback #{@method} #{@hook} #{@lifecycle}#{optional_lifecycle_phrase}#{condition_phrase}" end |
#failure_message ⇒ Object
90 91 92 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 90 def @failure_message || "expected #{@method} to be listed as a callback #{@hook} #{@lifecycle}#{optional_lifecycle_phrase}#{condition_phrase}, but was not" end |
#is_callback?(subject, callback) ⇒ Boolean
75 76 77 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 75 def is_callback?(subject, callback) is_callback_object?(subject, callback) || is_callback_symbol?(subject, callback) end |
#is_callback_object?(subject, callback) ⇒ Boolean
83 84 85 86 87 88 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 83 def is_callback_object?(subject, callback) @method.kind_of?(Class) && callback.filter.match(/^_callback/) && subject.respond_to?("#{callback.filter}_object") && subject.send("#{callback.filter}_object").class == @method end |
#is_callback_symbol?(subject, callback) ⇒ Boolean
79 80 81 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 79 def is_callback_symbol?(subject, callback) callback.filter == @method end |
#matches?(subject) ⇒ Boolean
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 58 def matches?(subject) unless @lifecycle @failure_message = "callback #{@method} can not be tested against an undefined lifecycle, use .before, .after or .around" false else callbacks = subject.send(:"_#{@lifecycle}_callbacks").dup callbacks = callbacks.select do |callback| subject.respond_to?(callback.filter) && is_callback?(subject, callback) && callback.kind == @hook && matches_conditions?(callback) && matches_optional_lifecycle?(callback) end callbacks.size > 0 end end |
#negative_failure_message ⇒ Object
94 95 96 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 94 def @failure_message || "expected #{@method} not to be listed as a callback #{@hook} #{@lifecycle}#{optional_lifecycle_phrase}#{condition_phrase}, but was" end |
#on(optional_lifecycle) ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/shoulda/callback/matchers/active_model.rb', line 48 def on(optional_lifecycle) unless @lifecycle == :validation @failure_message = "The .on option is only valid for the validation lifecycle and cannot be used with #{@lifecycle}, use with .before(:validation) or .after(:validation)" else @optional_lifecycle = optional_lifecycle end self end |