mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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**.
This commit is contained in:
parent
7607687c91
commit
9a6f20e8f0
1 changed files with 13 additions and 2 deletions
|
@ -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?
|
||||
|
|
Loading…
Reference in a new issue