1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

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.
This commit is contained in:
Chris Salzberg 2019-04-13 22:17:54 +09:00
parent cc6bff3daa
commit 42a8340aa8
No known key found for this signature in database
GPG key ID: C0C7B09832CB1CB1

View file

@ -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