From 6f3503c9653d3492c131c58dadd319dbddaf9ad0 Mon Sep 17 00:00:00 2001 From: Santiago Pastorino Date: Sat, 14 Sep 2013 22:04:41 -0300 Subject: [PATCH] Use serializer name as root when root not set --- lib/active_model/serializer.rb | 8 +------- .../action_controller/serialization_test.rb | 10 +++++----- test/integration/active_record/active_record_test.rb | 2 +- test/unit/active_model/serializer/attributes_test.rb | 2 +- test/unit/active_model/serializer/has_many_test.rb | 6 +++--- test/unit/active_model/serializer/has_one_test.rb | 6 +++--- 6 files changed, 14 insertions(+), 20 deletions(-) diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index 83874b4a..18072fd2 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -87,7 +87,7 @@ module ActiveModel def root=(root) @root = root @root = self.class._root if @root.nil? - @root = self.class.root_name if auto_assign_root? + @root = self.class.root_name if @root == true || @root.nil? end def attributes @@ -142,11 +142,5 @@ module ActiveModel hash.merge! associations end alias serializable_object serializable_hash - - private - - def auto_assign_root? - @root == true || !@root && self.class._associations.any? { |a| a.embed_in_root? } - end end end diff --git a/test/integration/action_controller/serialization_test.rb b/test/integration/action_controller/serialization_test.rb index 660d1670..d367988e 100644 --- a/test/integration/action_controller/serialization_test.rb +++ b/test/integration/action_controller/serialization_test.rb @@ -14,7 +14,7 @@ module ActionController def test_render_using_implicit_serializer get :render_using_implicit_serializer assert_equal 'application/json', @response.content_type - assert_equal '{"name":"Name 1","description":"Description 1"}', @response.body + assert_equal '{"profile":{"name":"Name 1","description":"Description 1"}}', @response.body end end @@ -36,7 +36,7 @@ module ActionController def test_render_using_implicit_serializer_and_scope get :render_using_implicit_serializer_and_scope assert_equal 'application/json', @response.content_type - assert_equal '{"name":"Name 1","description":"Description 1 - current_user"}', @response.body + assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_user"}}', @response.body end end @@ -62,7 +62,7 @@ module ActionController def test_render_using_implicit_serializer_and_explicit_scope get :render_using_implicit_serializer_and_explicit_scope assert_equal 'application/json', @response.content_type - assert_equal '{"name":"Name 1","description":"Description 1 - current_admin"}', @response.body + assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_admin"}}', @response.body end end @@ -88,7 +88,7 @@ module ActionController def test_render_overriding_serialization_scope get :render_overriding_serialization_scope assert_equal 'application/json', @response.content_type - assert_equal '{"name":"Name 1","description":"Description 1 - current_admin"}', @response.body + assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_admin"}}', @response.body end end @@ -112,7 +112,7 @@ module ActionController def test_render_calling_serialization_scope get :render_calling_serialization_scope assert_equal 'application/json', @response.content_type - assert_equal '{"name":"Name 1","description":"Description 1 - current_user"}', @response.body + assert_equal '{"profile":{"name":"Name 1","description":"Description 1 - current_user"}}', @response.body end end diff --git a/test/integration/active_record/active_record_test.rb b/test/integration/active_record/active_record_test.rb index cfd04410..e87d0571 100644 --- a/test/integration/active_record/active_record_test.rb +++ b/test/integration/active_record/active_record_test.rb @@ -22,7 +22,7 @@ module ActiveModel def test_attributes_serialization_using_as_json assert_equal({ - 'name' => 'Name 1', 'description' => 'Description 1' + 'ar_profile' => { 'name' => 'Name 1', 'description' => 'Description 1' } }, @profile_serializer.as_json) end end diff --git a/test/unit/active_model/serializer/attributes_test.rb b/test/unit/active_model/serializer/attributes_test.rb index 10bad2b7..1091ccee 100644 --- a/test/unit/active_model/serializer/attributes_test.rb +++ b/test/unit/active_model/serializer/attributes_test.rb @@ -21,7 +21,7 @@ module ActiveModel def test_attributes_serialization_using_as_json assert_equal({ - 'name' => 'Name 1', 'description' => 'Description 1' + 'profile' => { 'name' => 'Name 1', 'description' => 'Description 1' } }, @profile_serializer.as_json) end end diff --git a/test/unit/active_model/serializer/has_many_test.rb b/test/unit/active_model/serializer/has_many_test.rb index c73ce346..3c0cddaa 100644 --- a/test/unit/active_model/serializer/has_many_test.rb +++ b/test/unit/active_model/serializer/has_many_test.rb @@ -29,7 +29,7 @@ module ActiveModel def test_associations_embedding_ids_serialization_using_as_json assert_equal({ - 'title' => 'Title 1', 'body' => 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } + 'post' => { 'title' => 'Title 1', 'body' => 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } } }, @post_serializer.as_json) end @@ -50,7 +50,7 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_as_json @association.embed = :objects assert_equal({ - 'title' => 'Title 1', 'body' => 'Body 1', 'comments' => [{ 'content' => 'C1' }, { 'content' => 'C2' }] + 'post' => { 'title' => 'Title 1', 'body' => 'Body 1', 'comments' => [{ 'content' => 'C1' }, { 'content' => 'C2' }] } }, @post_serializer.as_json) end @@ -63,7 +63,7 @@ module ActiveModel end assert_equal({ - 'title' => 'Title 1', 'body' => 'Body 1', 'comments' => [nil] + 'post' => { 'title' => 'Title 1', 'body' => 'Body 1', 'comments' => [nil] } }, @post_serializer.as_json) end diff --git a/test/unit/active_model/serializer/has_one_test.rb b/test/unit/active_model/serializer/has_one_test.rb index d7cddfd5..3ff24fb5 100644 --- a/test/unit/active_model/serializer/has_one_test.rb +++ b/test/unit/active_model/serializer/has_one_test.rb @@ -29,7 +29,7 @@ module ActiveModel def test_associations_embedding_ids_serialization_using_as_json assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id + 'user' => { 'name' => 'Name 1', 'email' => 'mail@server.com', 'profile_id' => @user.profile.object_id } }, @user_serializer.as_json) end @@ -50,7 +50,7 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_as_json @association.embed = :objects assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profiles' => [{ 'name' => 'N1', 'description' => 'D1' }] + 'user' => { 'name' => 'Name 1', 'email' => 'mail@server.com', 'profiles' => [{ 'name' => 'N1', 'description' => 'D1' }] } }, @user_serializer.as_json) end @@ -63,7 +63,7 @@ module ActiveModel end assert_equal({ - 'name' => 'Name 1', 'email' => 'mail@server.com', 'profiles' => [nil] + 'user' => { 'name' => 'Name 1', 'email' => 'mail@server.com', 'profiles' => [nil] } }, @user_serializer.as_json) end