diff options
Diffstat (limited to 'activemodel/test')
-rw-r--r-- | activemodel/test/cases/validations/validates_test.rb | 41 | ||||
-rw-r--r-- | activemodel/test/models/person.rb | 4 |
2 files changed, 42 insertions, 3 deletions
diff --git a/activemodel/test/cases/validations/validates_test.rb b/activemodel/test/cases/validations/validates_test.rb index c0bf03efc7..181ff38b64 100644 --- a/activemodel/test/cases/validations/validates_test.rb +++ b/activemodel/test/cases/validations/validates_test.rb @@ -4,14 +4,21 @@ require 'models/person' require 'models/person_with_validator' require 'validators/email_validator' -class ValidatesTest < ActiveRecord::TestCase +class ValidatesTest < ActiveModel::TestCase + setup :reset_callbacks + teardown :reset_callbacks + + def reset_callbacks + Person.reset_callbacks(:validate) + end + 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 @@ -25,7 +32,35 @@ class ValidatesTest < ActiveRecord::TestCase person.valid? assert person.errors[:karma].include?('is not an email') end - + + def test_validates_with_if_as_local_conditions + Person.validates :karma, :presence => true, :email => { :unless => :condition_is_true } + person = Person.new + person.valid? + assert !person.errors[:karma].include?('is not an email') + assert person.errors[:karma].include?('can\'t be blank') + end + + def test_validates_with_if_as_shared_conditions + Person.validates :karma, :presence => true, :email => true, :if => :condition_is_true + person = Person.new + person.valid? + assert person.errors[:karma].include?('is not an email') + assert person.errors[:karma].include?('can\'t be blank') + end + + def test_validates_with_unless_shared_conditions + Person.validates :karma, :presence => true, :email => true, :unless => :condition_is_true + person = Person.new + assert person.valid? + end + + def test_validates_with_allow_nil_shared_conditions + Person.validates :karma, :length => { :minimum => 20 }, :email => true, :allow_nil => true + person = Person.new + assert person.valid? + end + def test_validates_with_validator_class_and_options Person.validates :karma, :email => { :message => 'my custom message' } person = Person.new diff --git a/activemodel/test/models/person.rb b/activemodel/test/models/person.rb index c83d768379..53ac68055f 100644 --- a/activemodel/test/models/person.rb +++ b/activemodel/test/models/person.rb @@ -3,6 +3,10 @@ class Person extend ActiveModel::Translation attr_accessor :title, :karma, :salary + + def condition_is_true + true + end end class Child < Person |