Use underscored json_root

This commit is contained in:
Mikhail Topolskiy 2015-08-13 20:31:48 +03:00
parent 8568ed5913
commit e8e4bdefd2
3 changed files with 24 additions and 11 deletions

View File

@ -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

View File

@ -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

View File

@ -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