diff options
author | Chris Salzberg <chris@dejimata.com> | 2019-04-13 22:17:54 +0900 |
---|---|---|
committer | Chris Salzberg <chris@dejimata.com> | 2019-04-13 22:20:56 +0900 |
commit | 42a8340aa8b68a2dafaf7d611ba889a807ec278f (patch) | |
tree | 8776078fded5f7b484310c216958c15aab8dc5b3 | |
parent | cc6bff3daa4da4d2c6935761d0ab059201f772e2 (diff) | |
download | rails-42a8340aa8b68a2dafaf7d611ba889a807ec278f.tar.gz rails-42a8340aa8b68a2dafaf7d611ba889a807ec278f.tar.bz2 rails-42a8340aa8b68a2dafaf7d611ba889a807ec278f.zip |
Add validation to subclass in tests to avoid polluting parent class
These two tests currently both define acceptance validators on the same
class, Topic. This means that in either one test or the other, there are
not one but *two* instances of the LazilyDefineAttributes module
builder in the class' ancestors, which can result in unpredictable
results.
Subclassing Topic in each test avoids conflicts.
-rw-r--r-- | activerecord/test/cases/validations_test.rb | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/activerecord/test/cases/validations_test.rb b/activerecord/test/cases/validations_test.rb index 9a70934b7e..4f98a6b7fc 100644 --- a/activerecord/test/cases/validations_test.rb +++ b/activerecord/test/cases/validations_test.rb @@ -145,15 +145,17 @@ class ValidationsTest < ActiveRecord::TestCase end def test_validates_acceptance_of_with_undefined_attribute_methods - Topic.validates_acceptance_of(:approved) - topic = Topic.new(approved: true) - Topic.undefine_attribute_methods + klass = Class.new(Topic) + klass.validates_acceptance_of(:approved) + topic = klass.new(approved: true) + klass.undefine_attribute_methods assert topic.approved end def test_validates_acceptance_of_as_database_column - Topic.validates_acceptance_of(:approved) - topic = Topic.create("approved" => true) + klass = Class.new(Topic) + klass.validates_acceptance_of(:approved) + topic = klass.create("approved" => true) assert topic["approved"] end |