active_model_serializers/test/array_serializer_test.rb
2013-05-30 15:25:06 -06:00

86 lines
2.3 KiB
Ruby

require "test_helper"
require "test_fakes"
class ArraySerializerTest < ActiveModel::TestCase
# serialize different typed objects
def test_array_serializer
model = Model.new
user = User.new
comments = Comment.new(title: "Comment1", id: 1)
array = [model, user, comments]
serializer = array.active_model_serializer.new(array, scope: { scope: true })
assert_equal([
{ model: "Model" },
{ last_name: "Valim", ok: true, first_name: "Jose", scope: true },
{ title: "Comment1" }
], serializer.as_json)
end
def test_array_serializer_with_root
comment1 = Comment.new(title: "Comment1", id: 1)
comment2 = Comment.new(title: "Comment2", id: 2)
array = [ comment1, comment2 ]
serializer = array.active_model_serializer.new(array, root: :comments)
assert_equal({ comments: [
{ title: "Comment1" },
{ title: "Comment2" }
]}, serializer.as_json)
end
def test_active_model_with_root
comment1 = ModelWithActiveModelSerializer.new(title: "Comment1")
comment2 = ModelWithActiveModelSerializer.new(title: "Comment2")
array = [ comment1, comment2 ]
serializer = array.active_model_serializer.new(array, root: :comments)
assert_equal({ comments: [
{ title: "Comment1" },
{ title: "Comment2" }
]}, serializer.as_json)
end
def test_array_serializer_with_hash
hash = { value: "something" }
array = [hash]
serializer = array.active_model_serializer.new(array, root: :items)
assert_equal({ items: [hash.as_json] }, serializer.as_json)
end
def test_array_serializer_with_specified_serializer
post1 = Post.new(title: "Post1", author: "Author1", id: 1)
post2 = Post.new(title: "Post2", author: "Author2", id: 2)
array = [ post1, post2 ]
serializer = array.active_model_serializer.new array, each_serializer: CustomPostSerializer
assert_equal([
{ title: "Post1" },
{ title: "Post2" }
], serializer.as_json)
end
def test_array_serializer_using_default_serializer
hash = { "value" => "something" }
class << hash
def active_model_serializer
nil
end
end
array = [hash]
serializer = array.active_model_serializer.new array
assert_equal([
{ "value" => "something" }
], serializer.as_json)
end
end