class Mongoid::Matchers::Validations::HaveValidationMatcher
Public Class Methods
new(field, validation_type)
click to toggle source
# File lib/matchers/validations.rb, line 5 def initialize(field, validation_type) @field = field.to_s @type = validation_type.to_s @options = {} end
Public Instance Methods
description()
click to toggle source
# File lib/matchers/validations.rb, line 42 def description desc = "have #{@type.inspect} validator on #{@field.inspect}" desc << " on #{@options[:on]}" if @options[:on] desc << " with message #{@expected_message.inspect}" if @expected_message desc end
failure_message_for_should()
click to toggle source
# File lib/matchers/validations.rb, line 31 def failure_message_for_should "Expected #{@klass.inspect} to #{description}; instead got #{@negative_result_message}" end
Also aliased as: failure_message
failure_message_for_should_not()
click to toggle source
# File lib/matchers/validations.rb, line 35 def failure_message_for_should_not "Expected #{@klass.inspect} to not #{description}; instead got #{@positive_result_message}" end
Also aliased as: failure_message_when_negated
matches?(actual)
click to toggle source
# File lib/matchers/validations.rb, line 11 def matches?(actual) @klass = actual.is_a?(Class) ? actual : actual.class @validator = @klass.validators_on(@field).detect do |v| (v.kind.to_s == @type) && (!v.options[:on] || on_options_matches?(v)) end if @validator @negative_result_message = "#{@type.inspect} validator on #{@field.inspect}" @positive_result_message = "#{@type.inspect} validator on #{@field.inspect}" else @negative_result_message = "no #{@type.inspect} validator on #{@field.inspect}" return false end @result = true check_on if @options[:on] check_expected_message if @expected_message @result end
on(*on_method)
click to toggle source
# File lib/matchers/validations.rb, line 50 def on(*on_method) @options[:on] = on_method.flatten self end
with_message(message)
click to toggle source
# File lib/matchers/validations.rb, line 55 def with_message(message) @expected_message = message self end
Private Instance Methods
check_expected_message()
click to toggle source
# File lib/matchers/validations.rb, line 85 def check_expected_message actual_message = @validator.options[:message] if actual_message.nil? @negative_result_message << ' with no custom message' @result = false elsif actual_message == @expected_message @positive_result_message << " with custom message '#{@expected_message}'" else @negative_result_message << " got message '#{actual_message}'" @result = false end end
check_on()
click to toggle source
# File lib/matchers/validations.rb, line 62 def check_on validator_on_methods = [@validator.options[:on]].flatten if validator_on_methods.any? message = " on methods: #{validator_on_methods}" if on_options_covered_by?(@validator) @positive_result_message << message else @negative_result_message << message @result = false end end end
on_options_covered_by?(validator)
click to toggle source
# File lib/matchers/validations.rb, line 81 def on_options_covered_by?(validator) ([@options[:on]].flatten - [validator.options[:on]].flatten).empty? end
on_options_matches?(validator)
click to toggle source
# File lib/matchers/validations.rb, line 77 def on_options_matches?(validator) @options[:on] && validator.options[:on] && on_options_covered_by?(validator) end