mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-24 14:56:50 +00:00
added failing spec to show how both symbol and string keys are causing problems
This commit is contained in:
parent
89f87bf855
commit
34d684ee9a
12
test/fixtures/poro.rb
vendored
12
test/fixtures/poro.rb
vendored
@ -47,6 +47,12 @@ class Post < Model
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class SpecialPost < Post
|
||||||
|
def special_comment
|
||||||
|
@speical_comment ||= Comment.new(content: 'special')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class Comment < Model
|
class Comment < Model
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -110,6 +116,12 @@ class PostSerializer < ActiveModel::Serializer
|
|||||||
has_many :comments
|
has_many :comments
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class SpecialPostSerializer < ActiveModel::Serializer
|
||||||
|
attributes :title, :body
|
||||||
|
has_many :comments, root: :comments, embed_in_root: true, embed: :ids
|
||||||
|
has_one :special_comment, root: :comments, embed_in_root: true, embed: :ids
|
||||||
|
end
|
||||||
|
|
||||||
class CommentSerializer < ActiveModel::Serializer
|
class CommentSerializer < ActiveModel::Serializer
|
||||||
attributes :content
|
attributes :content
|
||||||
end
|
end
|
||||||
|
|||||||
@ -0,0 +1,27 @@
|
|||||||
|
require 'test_helper'
|
||||||
|
|
||||||
|
module ActiveModel
|
||||||
|
class Serializer
|
||||||
|
class HasOneAndHasManyTest < Minitest::Test
|
||||||
|
def setup
|
||||||
|
@post = SpecialPost.new({ title: 'T1', body: 'B1'})
|
||||||
|
@post_serializer = SpecialPostSerializer.new(@post)
|
||||||
|
end
|
||||||
|
|
||||||
|
def teardown
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_side_load_has_one_and_has_many_in_same_array
|
||||||
|
assert_equal({
|
||||||
|
"post" => {
|
||||||
|
title: 'T1',
|
||||||
|
body: 'B1',
|
||||||
|
'comment_ids' => @post.comments.map { |c| c.object_id },
|
||||||
|
'special_comment_id' => @post_serializer.special_comment.object_id,
|
||||||
|
},
|
||||||
|
"comments" => [{ content: 'C1' }, { content: 'C2' }, { content: 'special' }]
|
||||||
|
}, @post_serializer.as_json(root: 'post'))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Reference in New Issue
Block a user