aboutsummaryrefslogblamecommitdiffstats
path: root/activemodel/test/cases/validations/validates_test.rb
blob: c0bf03efc7d0365d92948077987493fb680141f3 (plain) (tree)




















































                                                                                 
# encoding: utf-8
require 'cases/helper'
require 'models/person'
require 'models/person_with_validator'
require 'validators/email_validator'

class ValidatesTest < ActiveRecord::TestCase  
  def test_validates_with_built_in_validation
    Person.validates :title, :numericality => true
    person = Person.new
    person.valid?
    assert person.errors[:title].include?('is not a number')
  end
  
  def test_validates_with_built_in_validation_and_options
    Person.validates :title, :numericality => { :message => 'my custom message' }
    person = Person.new
    person.valid?
    assert person.errors[:title].include?('my custom message')
  end
  
  def test_validates_with_validator_class
    Person.validates :karma, :email => true
    person = Person.new
    person.valid?
    assert person.errors[:karma].include?('is not an email')
  end
  
  def test_validates_with_validator_class_and_options
    Person.validates :karma, :email => { :message => 'my custom message' }
    person = Person.new
    person.valid?
    assert person.errors[:karma].include?('my custom message')
  end
  
  def test_validates_with_unknown_validator
    assert_raise(ArgumentError) { Person.validates :karma, :unknown => true }
  end
  
  def test_validates_with_included_validator
    PersonWithValidator.validates :title, :presence => true
    person = PersonWithValidator.new
    person.valid?
    assert person.errors[:title].include?('Local validator')
  end
  
  def test_validates_with_included_validator_and_options
    PersonWithValidator.validates :title, :presence => { :custom => ' please' }
    person = PersonWithValidator.new
    person.valid?
    assert person.errors[:title].include?('Local validator please')
  end
end