aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@plataformatec.com.br>2012-07-27 11:02:29 -0700
committerJosé Valim <jose.valim@plataformatec.com.br>2012-07-27 11:02:29 -0700
commit1fab518c6a75dac5773654646eb724a59741bc13 (patch)
tree39f815f60ca380dd799fdfe3ebcd8fb567bd36e7 /activerecord/test/cases
parent04998cd0c92a13332844d04145a4ede3184c7bd0 (diff)
parent9feda929409ab687befaed8d1c9878d94e955adc (diff)
downloadrails-1fab518c6a75dac5773654646eb724a59741bc13.tar.gz
rails-1fab518c6a75dac5773654646eb724a59741bc13.tar.bz2
rails-1fab518c6a75dac5773654646eb724a59741bc13.zip
Merge pull request #6827 from zephyr-dev/master
Validates_presence_of associated object marked for destruction
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/validations/presence_validation_test.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/activerecord/test/cases/validations/presence_validation_test.rb b/activerecord/test/cases/validations/presence_validation_test.rb
new file mode 100644
index 0000000000..cd9175f454
--- /dev/null
+++ b/activerecord/test/cases/validations/presence_validation_test.rb
@@ -0,0 +1,44 @@
+# encoding: utf-8
+require "cases/helper"
+require 'models/man'
+require 'models/face'
+require 'models/interest'
+
+class PresenceValidationTest < ActiveRecord::TestCase
+ class Boy < Man; end
+
+ repair_validations(Boy)
+
+ def test_validates_presence_of_non_association
+ Boy.validates_presence_of(:name)
+ b = Boy.new
+ assert b.invalid?
+
+ b.name = "Alex"
+ assert b.valid?
+ end
+
+ def test_validates_presence_of_has_one_marked_for_destruction
+ Boy.validates_presence_of(:face)
+ b = Boy.new
+ f = Face.new
+ b.face = f
+ assert b.valid?
+
+ f.mark_for_destruction
+ assert b.invalid?
+ end
+
+ def test_validates_presence_of_has_many_marked_for_destruction
+ Boy.validates_presence_of(:interests)
+ b = Boy.new
+ b.interests << [i1 = Interest.new, i2 = Interest.new]
+ assert b.valid?
+
+ i1.mark_for_destruction
+ assert b.valid?
+
+ i2.mark_for_destruction
+ assert b.invalid?
+ end
+end