Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/active_model/array_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion lib/active_model/serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
37 changes: 37 additions & 0 deletions test/integration/action_controller/serialization_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down