mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-25 07:16:49 +00:00
Append an _id or _ids suffix to associations' keys. Embed objects in root according to their serializers' names.
An `_id` suffix will be appended to the name of HasOne associations, while `_ids` will be appended to the singularized name of HasMany associations. Association keys can still be overridden with the `key` option. Furthermore, objects embedded in the root are now by default named according to their serializer, instead of the key used for their associations.
This commit is contained in:
@@ -70,7 +70,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include! :comments, :value => @post.comments
|
||||
|
||||
assert_equal({
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
@@ -91,7 +91,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include! :comments, :value => @post.comments, :embed => :ids, :include => false
|
||||
|
||||
assert_equal({
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
}, @hash)
|
||||
|
||||
assert_equal({}, @root_hash)
|
||||
@@ -101,7 +101,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include! :comment, :value => @post.comment
|
||||
|
||||
assert_equal({
|
||||
:comment => 1
|
||||
:comment_id => 1
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
@@ -119,7 +119,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include! :comments
|
||||
|
||||
assert_equal({
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
@@ -137,7 +137,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include! :comment
|
||||
|
||||
assert_equal({
|
||||
:comment => 1
|
||||
:comment_id => 1
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
@@ -159,7 +159,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
:custom_comments => [
|
||||
:comments => [
|
||||
{ :id => 1, :body => "ZOMG A COMMENT" }
|
||||
]
|
||||
}, @root_hash)
|
||||
@@ -167,17 +167,17 @@ class AssociationTest < ActiveModel::TestCase
|
||||
|
||||
def test_with_default_has_one_with_custom_key
|
||||
@post_serializer_class.class_eval do
|
||||
has_one :comment, :key => :custom_comment
|
||||
has_one :comment, :key => :custom_comment_id
|
||||
end
|
||||
|
||||
include! :comment
|
||||
|
||||
assert_equal({
|
||||
:custom_comment => 1
|
||||
:custom_comment_id => 1
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
:custom_comments => [
|
||||
:comments => [
|
||||
{ :id => 1, :body => "ZOMG A COMMENT" }
|
||||
]
|
||||
}, @root_hash)
|
||||
@@ -207,7 +207,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include_bare! :comments
|
||||
|
||||
assert_equal({
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
}, @hash)
|
||||
|
||||
assert_equal({}, @root_hash)
|
||||
@@ -232,7 +232,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include_bare! :comments
|
||||
|
||||
assert_equal({
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
@@ -250,7 +250,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include_bare! :comment
|
||||
|
||||
assert_equal({
|
||||
:comment => 1
|
||||
:comment_id => 1
|
||||
}, @hash)
|
||||
|
||||
assert_equal({}, @root_hash)
|
||||
@@ -275,7 +275,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
include_bare! :comment
|
||||
|
||||
assert_equal({
|
||||
:comment => 1
|
||||
:comment_id => 1
|
||||
}, @hash)
|
||||
|
||||
assert_equal({
|
||||
@@ -333,7 +333,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "Body",
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
},
|
||||
:comments => [
|
||||
{ :id => 1, :body => "ZOMG A COMMENT" }
|
||||
@@ -352,7 +352,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "Body",
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
}
|
||||
}, json)
|
||||
end
|
||||
@@ -368,7 +368,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "Body",
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
}
|
||||
}, json)
|
||||
end
|
||||
@@ -384,7 +384,7 @@ class AssociationTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "Body",
|
||||
:comments => [ 1 ]
|
||||
:comment_ids => [ 1 ]
|
||||
},
|
||||
:comments => [
|
||||
{ :id => 1, :body => "ZOMG A COMMENT" }
|
||||
|
||||
@@ -281,8 +281,8 @@ class SerializerTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "Body of new post",
|
||||
:comments => [1, 2],
|
||||
:author => nil
|
||||
:comment_ids => [1, 2],
|
||||
:author_id => nil
|
||||
}
|
||||
}, serializer.as_json)
|
||||
end
|
||||
@@ -305,8 +305,8 @@ class SerializerTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "Body of new post",
|
||||
:comments => [1, 2],
|
||||
:author => nil
|
||||
:comment_ids => [1, 2],
|
||||
:author_id => nil
|
||||
},
|
||||
:comments => [
|
||||
{ :title => "Comment1" },
|
||||
@@ -323,8 +323,8 @@ class SerializerTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "Body of new post",
|
||||
:comments => [1, 2],
|
||||
:author => 1
|
||||
:comment_ids => [1, 2],
|
||||
:author_id => 1
|
||||
},
|
||||
:comments => [
|
||||
{ :title => "Comment1" },
|
||||
@@ -558,7 +558,7 @@ class SerializerTest < ActiveModel::TestCase
|
||||
:post => {
|
||||
:title => "New Post",
|
||||
:body => "It's a new post!",
|
||||
:author => 5
|
||||
:author_id => 5
|
||||
}
|
||||
}, hash.as_json)
|
||||
end
|
||||
@@ -776,12 +776,12 @@ class SerializerTest < ActiveModel::TestCase
|
||||
actual = ActiveModel::ArraySerializer.new([post], :root => :posts).as_json
|
||||
assert_equal({
|
||||
:posts => [
|
||||
{ :title => "New Post", :body => "NEW POST", :id => 1, :comments => [1,2] }
|
||||
{ :title => "New Post", :body => "NEW POST", :id => 1, :comment_ids => [1,2] }
|
||||
],
|
||||
|
||||
:comments => [
|
||||
{ :body => "EWOT", :id => 1, :tags => [1,3] },
|
||||
{ :body => "YARLY", :id => 2, :tags => [1,2] }
|
||||
{ :body => "EWOT", :id => 1, :tag_ids => [1,3] },
|
||||
{ :body => "YARLY", :id => 2, :tag_ids => [1,2] }
|
||||
],
|
||||
|
||||
:tags => [
|
||||
|
||||
Reference in New Issue
Block a user