diff --git a/test/serializer_test.rb b/test/serializer_test.rb index 77dc32e7..132d0b85 100644 --- a/test/serializer_test.rb +++ b/test/serializer_test.rb @@ -1035,4 +1035,45 @@ class SerializerTest < ActiveModel::TestCase } }, actual) end + + def test_polymorphic_associations_are_included_at_root + email_serializer = Class.new(ActiveModel::Serializer) do + attributes :subject, :body + end + + email_class = Class.new(Model) do + def self.to_s + "Email" + end + + define_method :active_model_serializer do + email_serializer + end + end + + attachment_serializer = Class.new(ActiveModel::Serializer) do + embed :ids, :include => true + attributes :name, :url + has_one :attachable, :polymorphic => true + end + + email = email_class.new :id => 1, :subject => "Hello", :body => "World" + + attachment = Attachment.new :name => 'logo.png', :url => 'http://example.com/logo.png', :attachable => email + + actual = attachment_serializer.new(attachment, {}).as_json + + assert_equal({ + :name => 'logo.png', + :url => 'http://example.com/logo.png', + :attachable => { + :email => 1 + }, + :emails => [{ + :id => 1, + :subject => "Hello", + :body => "World" + }] + }, actual) + end end