diff --git a/test/unit/active_model/serializer/has_many_test.rb b/test/unit/active_model/serializer/has_many_test.rb index 77e27875..541df46b 100644 --- a/test/unit/active_model/serializer/has_many_test.rb +++ b/test/unit/active_model/serializer/has_many_test.rb @@ -6,7 +6,7 @@ module ActiveModel def setup @association = PostSerializer._associations[:comments] @old_association = @association.dup - @association.embed = :ids + @post = Post.new({ title: 'Title 1', body: 'Body 1', date: '1/1/2000' }) @post_serializer = PostSerializer.new(@post) end @@ -22,19 +22,25 @@ module ActiveModel end def test_associations_embedding_ids_serialization_using_serializable_hash + @association.embed = :ids + assert_equal({ title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } }, @post_serializer.serializable_hash) end def test_associations_embedding_ids_serialization_using_as_json + @association.embed = :ids + assert_equal({ 'post' => { title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } } }, @post_serializer.as_json) end def test_associations_embedding_ids_serialization_using_serializable_hash_and_key_from_options + @association.embed = :ids @association.key = 'key' + assert_equal({ title: 'Title 1', body: 'Body 1', 'key' => @post.comments.map { |c| c.object_id } }, @post_serializer.serializable_hash) @@ -42,6 +48,7 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_serializable_hash @association.embed = :objects + assert_equal({ title: 'Title 1', body: 'Body 1', comments: [{ content: 'C1' }, { content: 'C2' }] }, @post_serializer.serializable_hash) @@ -49,6 +56,7 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_as_json @association.embed = :objects + assert_equal({ 'post' => { title: 'Title 1', body: 'Body 1', comments: [{ content: 'C1' }, { content: 'C2' }] } }, @post_serializer.as_json) @@ -70,47 +78,43 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_serializable_hash_and_root_from_options @association.embed = :objects @association.embedded_key = 'root' + assert_equal({ title: 'Title 1', body: 'Body 1', 'root' => [{ content: 'C1' }, { content: 'C2' }] }, @post_serializer.serializable_hash) end def test_associations_embedding_ids_including_objects_serialization_using_serializable_hash + @association.embed = :ids @association.embed_in_root = true + assert_equal({ title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } }, @post_serializer.serializable_hash) end def test_associations_embedding_ids_including_objects_serialization_using_as_json - CONFIG.embed = :ids - CONFIG.include = true - - @association.send :initialize, @association.name, @association.options + @association.embed = :ids + @association.embed_in_root = true assert_equal({ 'post' => { title: 'Title 1', body: 'Body 1', 'comment_ids' => @post.comments.map { |c| c.object_id } }, - 'comments' => [{ content: 'C1' }, { content: 'C2' }] + comments: [{ content: 'C1' }, { content: 'C2' }] }, @post_serializer.as_json) - ensure - CONFIG.clear end def test_associations_embedding_nothing_including_objects_serialization_using_as_json - CONFIG.embed = nil - CONFIG.include = true - - @association.send :initialize, @association.name, @association.options + @association.embed = nil + @association.embed_in_root = true assert_equal({ 'post' => { title: 'Title 1', body: 'Body 1' }, - 'comments' => [{ content: 'C1' }, { content: 'C2' }] + comments: [{ content: 'C1' }, { content: 'C2' }] }, @post_serializer.as_json) - ensure - CONFIG.clear end def test_associations_using_a_given_serializer + @association.embed = :ids @association.embed_in_root = true @association.serializer_class = Class.new(ActiveModel::Serializer) do def content diff --git a/test/unit/active_model/serializer/has_one_test.rb b/test/unit/active_model/serializer/has_one_test.rb index 3450cbf0..3dd72693 100644 --- a/test/unit/active_model/serializer/has_one_test.rb +++ b/test/unit/active_model/serializer/has_one_test.rb @@ -6,7 +6,7 @@ module ActiveModel def setup @association = UserSerializer._associations[:profile] @old_association = @association.dup - @association.embed = :ids + @user = User.new({ name: 'Name 1', email: 'mail@server.com', gender: 'M' }) @user_serializer = UserSerializer.new(@user) end @@ -22,19 +22,25 @@ module ActiveModel end def test_associations_embedding_ids_serialization_using_serializable_hash + @association.embed = :ids + assert_equal({ name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id }, @user_serializer.serializable_hash) end def test_associations_embedding_ids_serialization_using_as_json + @association.embed = :ids + assert_equal({ 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id } }, @user_serializer.as_json) end def test_associations_embedding_ids_serialization_using_serializable_hash_and_key_from_options + @association.embed = :ids @association.key = 'key' + assert_equal({ name: 'Name 1', email: 'mail@server.com', 'key' => @user.profile.object_id }, @user_serializer.serializable_hash) @@ -42,6 +48,7 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_serializable_hash @association.embed = :objects + assert_equal({ name: 'Name 1', email: 'mail@server.com', profile: { name: 'N1', description: 'D1' } }, @user_serializer.serializable_hash) @@ -49,12 +56,14 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_as_json @association.embed = :objects + assert_equal({ 'user' => { name: 'Name 1', email: 'mail@server.com', profile: { name: 'N1', description: 'D1' } } }, @user_serializer.as_json) end def test_associations_embedding_nil_ids_serialization_using_as_json + @association.embed = :ids @user.instance_eval do def profile nil @@ -82,22 +91,25 @@ module ActiveModel def test_associations_embedding_objects_serialization_using_serializable_hash_and_root_from_options @association.embed = :objects @association.embedded_key = 'root' + assert_equal({ name: 'Name 1', email: 'mail@server.com', 'root' => { name: 'N1', description: 'D1' } }, @user_serializer.serializable_hash) end def test_associations_embedding_ids_including_objects_serialization_using_serializable_hash + @association.embed = :ids @association.embed_in_root = true - @user_serializer.root = nil + assert_equal({ name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id }, @user_serializer.serializable_hash) end def test_associations_embedding_ids_including_objects_serialization_using_as_json + @association.embed = :ids @association.embed_in_root = true - @user_serializer.root = nil + assert_equal({ 'user' => { name: 'Name 1', email: 'mail@server.com', 'profile_id' => @user.profile.object_id }, profile: { name: 'N1', description: 'D1' } @@ -105,8 +117,8 @@ module ActiveModel end def test_associations_using_a_given_serializer + @association.embed = :ids @association.embed_in_root = true - @user_serializer.root = nil @association.serializer_class = Class.new(ActiveModel::Serializer) do def name 'fake'