* Do not ingerit array serializer from Serializer

* Tests for ArraySerializer
This commit is contained in:
Tema Bolshakov 2014-08-29 10:58:14 +04:00
parent 85ff8123fd
commit 3dd4928279
2 changed files with 33 additions and 6 deletions

View File

@ -1,13 +1,13 @@
module ActiveModel
class Serializer
class ArraySerializer < Serializer
class ArraySerializer
include Enumerable
delegate :each, to: :object
delegate :each, to: :@objects
def initialize(object)
@object = object.map do |item|
serializer_class = ActiveModel::Serializer.serializer_for(item)
serializer_class.new(item)
def initialize(objects, options = {})
@objects = objects.map do |object|
serializer_class = ActiveModel::Serializer.serializer_for(object)
serializer_class.new(object)
end
end
end

View File

@ -0,0 +1,27 @@
require 'test_helper'
module ActiveModel
class Serializer
class ArraySerializerTest < Minitest::Test
def setup
@comment = Comment.new
@post= Post.new
@serializer = ArraySerializer.new([@comment, @post])
end
def test_respond_to_each
assert_respond_to @serializer, :each
end
def test_each_object_should_be_serializer_with_appropriate_serializer
serializers = @serializer.to_a
assert_kind_of CommentSerializer, serializers.first
assert_kind_of Comment, serializers.first.object
assert_kind_of PostSerializer, serializers.last
assert_kind_of Post, serializers.last.object
end
end
end
end