Merge pull request #534 from kylefritz/master

Support lowerCamel key format
This commit is contained in:
Steve Klabnik
2014-07-28 12:43:36 -04:00
9 changed files with 131 additions and 10 deletions

11
test/fixtures/poro.rb vendored
View File

@@ -35,6 +35,9 @@ end
class Comment < Model
end
class WebLog < Model
end
###
## Serializers
###
@@ -62,3 +65,11 @@ end
class CommentSerializer < ActiveModel::Serializer
attributes :content
end
class WebLogSerializer < ActiveModel::Serializer
attributes :name, :display_name
end
class WebLogLowerCamelSerializer < WebLogSerializer
format_keys :lower_camel
end

View File

@@ -194,6 +194,22 @@ module ActionController
end
end
class LowerCamelArraySerializerTest < ActionController::TestCase
class WebLogController < ActionController::Base
def render_array
render json: [WebLog.new({name: 'Name 1', display_name: 'Display Name 1'}), WebLog.new({name: 'Name 2', display_name: 'Display Name 2'})], each_serializer: WebLogLowerCamelSerializer
end
end
tests WebLogController
def test_render_array
get :render_array
assert_equal 'application/json', @response.content_type
assert_equal '{"webLog":[{"name":"Name 1","displayName":"Display Name 1"},{"name":"Name 2","displayName":"Display Name 2"}]}', @response.body
end
end
class ArrayEmbedingSerializerTest < ActionController::TestCase
def setup
super

View File

@@ -0,0 +1,18 @@
require 'test_helper'
module ActiveModel
class ArraySerializer
class KeyFormatTest < Minitest::Test
def test_array_serializer_pass_options_to_items_serializers
array = [WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'}),
WebLog.new({ name: 'Name 2', display_name: 'Display Name 2'})]
serializer = ArraySerializer.new(array, key_format: :lower_camel)
expected = [{ name: 'Name 1', displayName: 'Display Name 1' },
{ name: 'Name 2', displayName: 'Display Name 2' }]
assert_equal expected, serializer.serializable_array
end
end
end
end

View File

@@ -67,6 +67,7 @@ module ActiveModel
def test_apply_config_to_associations
CONFIG.embed = :ids
CONFIG.embed_in_root = true
CONFIG.key_format = :lower_camel
association = PostSerializer._associations[:comments]
old_association = association.dup
@@ -76,6 +77,7 @@ module ActiveModel
assert association.embed_ids?
assert !association.embed_objects?
assert association.embed_in_root
assert_equal :lower_camel, association.key_format
ensure
PostSerializer._associations[:comments] = old_association
CONFIG.clear

View File

@@ -0,0 +1,25 @@
require 'test_helper'
module ActiveModel
class Serializer
class KeyFormatTest < Minitest::Test
def test_lower_camel_format_option
object = WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'})
serializer = WebLogSerializer.new(object, key_format: :lower_camel)
expected = { name: 'Name 1', displayName: 'Display Name 1' }
assert_equal expected, serializer.serializable_object
end
def test_lower_camel_format_serializer
object = WebLog.new({ name: 'Name 1', display_name: 'Display Name 1'})
serializer = WebLogLowerCamelSerializer.new(object)
expected = { name: 'Name 1', displayName: 'Display Name 1' }
assert_equal expected, serializer.serializable_object
end
end
end
end