mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 06:16:50 +00:00
Merge pull request #1052 from whatthewhat/underscored-json-root
Use underscored json_root when serializing a collection
This commit is contained in:
commit
6aba260491
@ -127,7 +127,7 @@ module ActiveModel
|
||||
end
|
||||
|
||||
def json_key
|
||||
@root || object.class.model_name.to_s.downcase
|
||||
@root || object.class.model_name.to_s.underscore
|
||||
end
|
||||
|
||||
def id
|
||||
|
||||
@ -17,26 +17,27 @@ module ActiveModel
|
||||
@first_post.blog = @blog
|
||||
@second_post.blog = nil
|
||||
|
||||
@serializer = ArraySerializer.new([@first_post, @second_post])
|
||||
@adapter = ActiveModel::Serializer::Adapter::Json.new(@serializer)
|
||||
ActionController::Base.cache_store.clear
|
||||
end
|
||||
|
||||
def test_with_serializer_option
|
||||
@blog.special_attribute = "Special"
|
||||
@blog.articles = [@first_post, @second_post]
|
||||
@serializer = ArraySerializer.new([@blog], serializer: CustomBlogSerializer)
|
||||
@adapter = ActiveModel::Serializer::Adapter::Json.new(@serializer)
|
||||
serializer = ArraySerializer.new([@blog], serializer: CustomBlogSerializer)
|
||||
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
|
||||
|
||||
expected = {blogs:[{
|
||||
id: 1,
|
||||
special_attribute: "Special",
|
||||
articles: [{id: 1,title: "Hello!!", body: "Hello, world!!"}, {id: 2, title: "New Post", body: "Body"}]
|
||||
}]}
|
||||
assert_equal expected, @adapter.serializable_hash
|
||||
assert_equal expected, adapter.serializable_hash
|
||||
end
|
||||
|
||||
def test_include_multiple_posts
|
||||
serializer = ArraySerializer.new([@first_post, @second_post])
|
||||
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
|
||||
|
||||
expected = { posts: [{
|
||||
title: "Hello!!",
|
||||
body: "Hello, world!!",
|
||||
@ -64,7 +65,15 @@ module ActiveModel
|
||||
name: "Custom blog"
|
||||
}
|
||||
}]}
|
||||
assert_equal expected, @adapter.serializable_hash
|
||||
assert_equal expected, adapter.serializable_hash
|
||||
end
|
||||
|
||||
def test_root_is_underscored
|
||||
virtual_value = VirtualValue.new(id: 1)
|
||||
serializer = ArraySerializer.new([virtual_value])
|
||||
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer)
|
||||
|
||||
assert_equal 1, adapter.serializable_hash[:virtual_values].length
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -5,13 +5,17 @@ module ActiveModel
|
||||
class RootTest < Minitest::Test
|
||||
|
||||
def setup
|
||||
@profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
|
||||
@profile_serializer = ProfileSerializer.new(@post, {root: 'smth'})
|
||||
@virtual_value = VirtualValue.new(id: 1)
|
||||
end
|
||||
|
||||
def test_overwrite_root
|
||||
setup
|
||||
assert_equal('smth', @profile_serializer.json_key)
|
||||
serializer = VirtualValueSerializer.new(@virtual_value, {root: 'smth'})
|
||||
assert_equal('smth', serializer.json_key)
|
||||
end
|
||||
|
||||
def test_underscore_in_root
|
||||
serializer = VirtualValueSerializer.new(@virtual_value)
|
||||
assert_equal('virtual_value', serializer.json_key)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user