From c4e6cd48b6324ca6a512a5f9c173ee8609732ede Mon Sep 17 00:00:00 2001 From: Vladimir Lyzo Date: Wed, 13 Aug 2014 11:19:42 +0400 Subject: [PATCH 1/2] Add failing test: serialize array with format_keys w/o root --- .../action_controller/serialization_test.rb | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/integration/action_controller/serialization_test.rb b/test/integration/action_controller/serialization_test.rb index 9065e211f..5d1736063 100644 --- a/test/integration/action_controller/serialization_test.rb +++ b/test/integration/action_controller/serialization_test.rb @@ -210,6 +210,43 @@ def test_render_array end end + class LowerCamelWoRootSerializerTest < ActionController::TestCase + class WebLogController < ActionController::Base + def render_without_root + render json: WebLog.new({name: 'Name 1', display_name: 'Display Name 1'}), + root: false, + serializer: WebLogLowerCamelSerializer + end + end + + tests WebLogController + + def test_render_without_root + get :render_without_root + assert_equal 'application/json', @response.content_type + assert_equal '{"name":"Name 1","displayName":"Display Name 1"}', @response.body + end + end + + class LowerCamelArrayWoRootSerializerTest < ActionController::TestCase + class WebLogController < ActionController::Base + def render_array_without_root + render json: [WebLog.new({name: 'Name 1', display_name: 'Display Name 1'}), + WebLog.new({name: 'Name 2', display_name: 'Display Name 2'})], + root: false, + each_serializer: WebLogLowerCamelSerializer + end + end + + tests WebLogController + + def test_render_array_without_root + get :render_array_without_root + assert_equal 'application/json', @response.content_type + assert_equal '[{"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 From adcea6aaf0c8dac2c7e3b3c9f19a111b1c82895d Mon Sep 17 00:00:00 2001 From: Vladimir Lyzo Date: Wed, 13 Aug 2014 11:26:16 +0400 Subject: [PATCH 2/2] Fix failing test: option format_key with root option --- lib/active_model/array_serializer.rb | 3 ++- lib/active_model/serializer.rb | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/active_model/array_serializer.rb b/lib/active_model/array_serializer.rb index 8a42e18a1..b314dbfcd 100644 --- a/lib/active_model/array_serializer.rb +++ b/lib/active_model/array_serializer.rb @@ -25,7 +25,8 @@ def initialize(object, options={}) def json_key key = root.nil? ? @resource_name : root - key_format == :lower_camel ? key.camelize(:lower) : key + + key_format == :lower_camel && key.present? ? key.camelize(:lower) : key end def serializer_for(item) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index bd1a3ac55..8a0e856ed 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -126,7 +126,7 @@ def json_key root end - key_format == :lower_camel ? key.camelize(:lower) : key + key_format == :lower_camel && key.present? ? key.camelize(:lower) : key end def attributes