aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases
diff options
context:
space:
mode:
authorGodfrey Chan <godfreykfc@gmail.com>2014-06-14 02:18:36 -0700
committerGodfrey Chan <godfreykfc@gmail.com>2014-06-14 02:29:38 -0700
commitdd1ec62578db6f7a03d1c07546b00a008a0c629d (patch)
tree6323bdb14bcaa8a17674815f7a31af28689399f9 /activerecord/test/cases
parentee4e86fa4bb6ab0406127e2708e9c3db346ba314 (diff)
downloadrails-dd1ec62578db6f7a03d1c07546b00a008a0c629d.tar.gz
rails-dd1ec62578db6f7a03d1c07546b00a008a0c629d.tar.bz2
rails-dd1ec62578db6f7a03d1c07546b00a008a0c629d.zip
Fixed a regression introduced in 84cf156
84cf156 (PR #15694) introduced a subtle regression. There are actually three distinct entry points to creating an AR object – via .new (i.e. #initialize), via #init_with (e.g. from YAML or database queries) and via .allocate. With the patch in 84cf156, attribute methods and respond_to? will not work correctly when objects are allocated directly, without going through either The reason this test case didn't catch the regression was that the `Topic` class is shared between test cases, so by the time this test case is ran the attribute methods are very likely to be defined. Switching to use a fresh anonymous class in the test to ensure we surface this problem in the future.
Diffstat (limited to 'activerecord/test/cases')
-rw-r--r--activerecord/test/cases/attribute_methods_test.rb6
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/test/cases/attribute_methods_test.rb b/activerecord/test/cases/attribute_methods_test.rb
index f832ca3451..f8e2609572 100644
--- a/activerecord/test/cases/attribute_methods_test.rb
+++ b/activerecord/test/cases/attribute_methods_test.rb
@@ -143,7 +143,11 @@ class AttributeMethodsTest < ActiveRecord::TestCase
# Syck calls respond_to? before actually calling initialize
def test_respond_to_with_allocated_object
- topic = Topic.allocate
+ klass = Class.new(ActiveRecord::Base) do
+ self.table_name = 'topics'
+ end
+
+ topic = klass.allocate
assert !topic.respond_to?("nothingness")
assert !topic.respond_to?(:nothingness)
assert_respond_to topic, "title"