Skip to content

Commit f134705

Browse files
committed
More tests coverage for class_attribute
1 parent 5a0b2fa commit f134705

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

activesupport/test/core_ext/class/attribute_test.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,14 @@ def setup
3030
test "overridable" do
3131
@sub.setting = 1
3232
assert_nil @klass.setting
33+
assert_equal 1, @sub.setting
3334

3435
@klass.setting = 2
36+
assert_equal 2, @klass.setting
3537
assert_equal 1, @sub.setting
3638

3739
assert_equal 1, Class.new(@sub).setting
40+
assert_equal 2, Class.new(@klass).setting
3841
end
3942

4043
test "predicate method" do
@@ -97,8 +100,34 @@ def setup
97100

98101
test "works well with singleton classes" do
99102
object = @klass.new
103+
100104
object.singleton_class.setting = "foo"
101105
assert_equal "foo", object.setting
106+
assert_nil @klass.setting
107+
108+
object.singleton_class.setting = "bar"
109+
assert_equal "bar", object.setting
110+
assert_nil @klass.setting
111+
112+
@klass.setting = "plop"
113+
assert_equal "bar", object.setting
114+
assert_equal "plop", @klass.setting
115+
end
116+
117+
test "when defined in a class's singleton" do
118+
@klass = Class.new do
119+
class << self
120+
class_attribute :__callbacks, default: 1
121+
end
122+
end
123+
124+
assert_equal 1, @klass.__callbacks
125+
assert_equal 1, @klass.singleton_class.__callbacks
126+
127+
# I honestly think this is a bug, but that's how it used to behave
128+
@klass.__callbacks = 4
129+
assert_equal 1, @klass.__callbacks
130+
assert_equal 1, @klass.singleton_class.__callbacks
102131
end
103132

104133
test "works well with module singleton classes" do

0 commit comments

Comments
 (0)