class Shoulda::Matchers::ActiveModel::NumericalityMatchers::ComparisonMatcher
Examples:
it { should validate_numericality_of(:attr). is_greater_than(6). less_than(20)...(and so on) }
Constants
- ERROR_MESSAGES
Public Class Methods
new(numericality_matcher, value, operator)
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 18 def initialize(numericality_matcher, value, operator) unless numericality_matcher.respond_to? :diff_to_compare raise ArgumentError, 'numericality_matcher is invalid' end @numericality_matcher = numericality_matcher @value = value @operator = operator @message = ERROR_MESSAGES[operator] @comparison_combos = comparison_combos end
Public Instance Methods
comparison_description()
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 43 def comparison_description "#{expectation} #{@value}" end
for(attribute)
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 29 def for(attribute) @attribute = attribute self end
matches?(subject)
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 34 def matches?(subject) @subject = subject all_bounds_correct? end
with_message(message)
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 39 def with_message(message) @message = message end
Private Instance Methods
all_bounds_correct?()
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 78 def all_bounds_correct? @comparison_combos.all? do |diff, checker_type| __send__(checker_type, @value + diff) do |matcher| matcher.with_message(@message, values: { count: @value }) end end end
comparison_combos()
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 49 def comparison_combos allow = :allows_value_of disallow = :disallows_value_of checker_types = case @operator when :> then [allow, disallow, disallow] when :>= then [allow, allow, disallow] when :== then [disallow, allow, disallow] when :< then [disallow, disallow, allow] when :<= then [disallow, allow, allow] end diffs_to_compare.zip(checker_types) end
diffs_to_compare()
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 63 def diffs_to_compare diff = @numericality_matcher.diff_to_compare [diff, 0, -diff] end
expectation()
click to toggle source
# File lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb, line 68 def expectation case @operator when :> then "greater than" when :>= then "greater than or equal to" when :== then "equal to" when :< then "less than" when :<= then "less than or equal to" end end