aboutsummaryrefslogtreecommitdiffstats
path: root/activemodel/test/cases/serializer_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activemodel/test/cases/serializer_test.rb')
-rw-r--r--activemodel/test/cases/serializer_test.rb26
1 files changed, 26 insertions, 0 deletions
diff --git a/activemodel/test/cases/serializer_test.rb b/activemodel/test/cases/serializer_test.rb
index 37a675bc20..08dd73e03b 100644
--- a/activemodel/test/cases/serializer_test.rb
+++ b/activemodel/test/cases/serializer_test.rb
@@ -174,4 +174,30 @@ class SerializerTest < ActiveModel::TestCase
}
}, json)
end
+
+ def test_overridden_associations
+ author_serializer = Class.new(ActiveModel::Serializer) do
+ attributes :first_name
+ end
+
+ blog_serializer = Class.new(ActiveModel::Serializer) do
+ const_set(:PersonSerializer, author_serializer)
+ has_one :person
+
+ def person
+ object.author
+ end
+ end
+
+ user = User.new
+ blog = Blog.new
+ blog.author = user
+
+ json = blog_serializer.new(blog, user).as_json
+ assert_equal({
+ :person => {
+ :first_name => "Jose"
+ }
+ }, json)
+ end
end