Class: Mongoid::Matchers::Validations::HaveValidationMatcher

Inherits:
Object
  • Object
show all
Defined in:
lib/matchers/validations.rb

Instance Method Summary collapse

Constructor Details

#initialize(field, validation_type) ⇒ HaveValidationMatcher

Returns a new instance of HaveValidationMatcher.



7
8
9
10
# File 'lib/matchers/validations.rb', line 7

def initialize(field, validation_type)
  @field = field.to_s
  @type = validation_type.to_s
end

Instance Method Details

#descriptionObject



36
37
38
# File 'lib/matchers/validations.rb', line 36

def description
  "validate #{@type} of #{@field.inspect}"
end

#failure_message_for_shouldObject



28
29
30
# File 'lib/matchers/validations.rb', line 28

def failure_message_for_should  
  "Expected #{@klass.inspect} to #{description}; instead got #{@negative_result_message}"  
end

#failure_message_for_should_notObject



32
33
34
# File 'lib/matchers/validations.rb', line 32

def failure_message_for_should_not  
  "Expected #{@klass.inspect} to not #{description}; instead got #{@positive_result_message}"  
end

#matches?(actual) ⇒ Boolean

Returns:

  • (Boolean)


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/matchers/validations.rb', line 12

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
  
  true
end