diff --git a/lib/active_model/serializer/array_serializer.rb b/lib/active_model/serializer/array_serializer.rb index de4adfdc..697c4454 100644 --- a/lib/active_model/serializer/array_serializer.rb +++ b/lib/active_model/serializer/array_serializer.rb @@ -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 diff --git a/test/array_serializer_test.rb b/test/array_serializer_test.rb new file mode 100644 index 00000000..66840a4a --- /dev/null +++ b/test/array_serializer_test.rb @@ -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