aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases/validations/validates_test.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-01-07 19:22:32 +0100
committerJosé Valim <jose.valim@gmail.com>2010-01-07 19:23:59 +0100
commit47a5fd4c4ba447c997c0a029adfa80d8b790b25a (patch)
treeebee9d3a65a7d780947ec685c00a4a3884007fe9 /activemodel/test/cases/validations/validates_test.rb
parent0a79eb7889e7ac711ff171a453d65f3df57b9237 (diff)
downloadrails-47a5fd4c4ba447c997c0a029adfa80d8b790b25a.tar.gz
rails-47a5fd4c4ba447c997c0a029adfa80d8b790b25a.tar.bz2
rails-47a5fd4c4ba447c997c0a029adfa80d8b790b25a.zip
Allow :if, :unless, :on, :allow_nil and :allow_blank as shared options in validates.
Diffstat (limited to 'activemodel/test/cases/validations/validates_test.rb')
-rw-r--r--activemodel/test/cases/validations/validates_test.rb41
1 files changed, 38 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