aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases/validations/callbacks_test.rb
diff options
context:
space:
mode:
authorclaudiob <claudiob@gmail.com>2014-12-14 19:30:41 -0800
committerclaudiob <claudiob@gmail.com>2014-12-14 21:18:31 -0800
commit9a6f20e8f0c8058e9311853c37244934b5fc2263 (patch)
treede3457c085b78556d8776af547ba64f897f70160 /activemodel/test/cases/validations/callbacks_test.rb
parent7607687c9166f8b2f8aa4d107bdbaadb99d4bb43 (diff)
downloadrails-9a6f20e8f0c8058e9311853c37244934b5fc2263.tar.gz
rails-9a6f20e8f0c8058e9311853c37244934b5fc2263.tar.bz2
rails-9a6f20e8f0c8058e9311853c37244934b5fc2263.zip
Add AM test for after_validation returning false
This stems from https://github.com/rails/rails/pull/17227#discussion_r21641358 It's simply a clarification of the current behavior by which if an `after_validation` ActiveModel callback returns +false+, then further `after_` callbacks **are not halted**.
Diffstat (limited to 'activemodel/test/cases/validations/callbacks_test.rb')
-rw-r--r--activemodel/test/cases/validations/callbacks_test.rb15
1 files changed, 13 insertions, 2 deletions
diff --git a/activemodel/test/cases/validations/callbacks_test.rb b/activemodel/test/cases/validations/callbacks_test.rb
index 6cd0f4ed4d..5d6d48b824 100644
--- a/activemodel/test/cases/validations/callbacks_test.rb
+++ b/activemodel/test/cases/validations/callbacks_test.rb
@@ -30,11 +30,16 @@ class DogWithTwoValidators < Dog
before_validation { self.history << 'before_validation_marker2' }
end
-class DogValidatorReturningFalse < Dog
+class DogBeforeValidatorReturningFalse < Dog
before_validation { false }
before_validation { self.history << 'before_validation_marker2' }
end
+class DogAfterValidatorReturningFalse < Dog
+ after_validation { false }
+ after_validation { self.history << 'after_validation_marker' }
+end
+
class DogWithMissingName < Dog
before_validation { self.history << 'before_validation_marker' }
validates_presence_of :name
@@ -82,12 +87,18 @@ class CallbacksWithMethodNamesShouldBeCalled < ActiveModel::TestCase
end
def test_further_callbacks_should_not_be_called_if_before_validation_returns_false
- d = DogValidatorReturningFalse.new
+ d = DogBeforeValidatorReturningFalse.new
output = d.valid?
assert_equal [], d.history
assert_equal false, output
end
+ def test_further_callbacks_should_be_called_if_after_validation_returns_false
+ d = DogAfterValidatorReturningFalse.new
+ d.valid?
+ assert_equal ['after_validation_marker'], d.history
+ end
+
def test_validation_test_should_be_done
d = DogWithMissingName.new
output = d.valid?