diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-01-03 17:22:20 -0300 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2015-01-03 17:22:20 -0300 |
commit | 4591b0fc041454f4ba4a83629b9bbca2a851969c (patch) | |
tree | 21b9019ee5d471205ccde051977d3c92b0a4f800 /activemodel/test/cases/validations/callbacks_test.rb | |
parent | 900758145d65438190a69f0fd227f62e01fa7bd2 (diff) | |
parent | 9c65c539e2caa4590aded1975aead008f8135da4 (diff) | |
download | rails-4591b0fc041454f4ba4a83629b9bbca2a851969c.tar.gz rails-4591b0fc041454f4ba4a83629b9bbca2a851969c.tar.bz2 rails-4591b0fc041454f4ba4a83629b9bbca2a851969c.zip |
Merge pull request #17227 from claudiob/explicitly-abort-callbacks
Introduce explicit way of halting callback chains by throwing :abort. Deprecate current implicit behavior of halting callback chains by returning `false` in apps ported to Rails 5.0. Completely remove that behavior in brand new Rails 5.0 apps.
Conflicts:
railties/CHANGELOG.md
Diffstat (limited to 'activemodel/test/cases/validations/callbacks_test.rb')
-rw-r--r-- | activemodel/test/cases/validations/callbacks_test.rb | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/activemodel/test/cases/validations/callbacks_test.rb b/activemodel/test/cases/validations/callbacks_test.rb index 5d6d48b824..4b0dd58efb 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 DogBeforeValidatorReturningFalse < Dog +class DogDeprecatedBeforeValidatorReturningFalse < Dog before_validation { false } before_validation { self.history << 'before_validation_marker2' } end +class DogBeforeValidatorThrowingAbort < Dog + before_validation { throw :abort } + before_validation { self.history << 'before_validation_marker2' } +end + class DogAfterValidatorReturningFalse < Dog after_validation { false } after_validation { self.history << 'after_validation_marker' } @@ -86,13 +91,22 @@ class CallbacksWithMethodNamesShouldBeCalled < ActiveModel::TestCase assert_equal ['before_validation_marker1', 'before_validation_marker2'], d.history end - def test_further_callbacks_should_not_be_called_if_before_validation_returns_false - d = DogBeforeValidatorReturningFalse.new + def test_further_callbacks_should_not_be_called_if_before_validation_throws_abort + d = DogBeforeValidatorThrowingAbort.new output = d.valid? assert_equal [], d.history assert_equal false, output end + def test_deprecated_further_callbacks_should_not_be_called_if_before_validation_returns_false + d = DogDeprecatedBeforeValidatorReturningFalse.new + assert_deprecated do + output = d.valid? + assert_equal [], d.history + assert_equal false, output + end + end + def test_further_callbacks_should_be_called_if_after_validation_returns_false d = DogAfterValidatorReturningFalse.new d.valid? |