Sha256: dad66cb12052d2ea6b69aa5d23be8201735cbd73ece09d9a72c99b017a14ff43
Contents?: true
Size: 1.77 KB
Versions: 3
Compression:
Stored size: 1.77 KB
Contents
module Mongoid module Matchers module Validations class HaveValidationMatcher def initialize(field, validation_type) @field = field.to_s @type = validation_type.to_s @options = {} end def matches?(actual) @klass = actual.is_a?(Class) ? actual : actual.class @validator = @klass.validators_on(@field).detect{|v| v.kind.to_s == @type} 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] @result end def failure_message_for_should "Expected #{@klass.inspect} to #{description}; instead got #{@negative_result_message}" end def failure_message_for_should_not "Expected #{@klass.inspect} to not #{description}; instead got #{@positive_result_message}" end def description "validate #{@type} of #{@field.inspect}" end def on(*on_method) @options[:on] = on_method.flatten self end def check_on message = " on methods: #{@validator.options[:on]}" if [@validator.options[:on]].flatten == @options[:on] @positive_result_message << message else @negative_result_message << message @result = false end end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
mongoid-rspec-1.5.0 | lib/matchers/validations.rb |
mongoid-rspec-1.4.6 | lib/matchers/validations.rb |
mongoid-rspec-1.4.5 | lib/matchers/validations.rb |