From 7072e797879da87d260e0122ca186ba790c79429 Mon Sep 17 00:00:00 2001 From: twinturbo Date: Sun, 15 Jul 2012 12:18:41 +0200 Subject: [PATCH 1/2] Close #90 --- lib/active_model_serializers.rb | 2 ++ test/serializer_test.rb | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index 18679652..55cca1f1 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -3,6 +3,7 @@ require "active_support/core_ext/string/inflections" require "active_support/notifications" require "active_model" require "active_model/serializer" +require "set" if defined?(Rails) module ActiveModel @@ -63,6 +64,7 @@ module ActiveModel::ArraySerializerSupport end Array.send(:include, ActiveModel::ArraySerializerSupport) +Set.send(:include, ActiveModel::ArraySerializerSupport) ActiveSupport.on_load(:active_record) do ActiveRecord::Relation.send(:include, ActiveModel::ArraySerializerSupport) diff --git a/test/serializer_test.rb b/test/serializer_test.rb index 288af48a..f740de59 100644 --- a/test/serializer_test.rb +++ b/test/serializer_test.rb @@ -434,6 +434,10 @@ class SerializerTest < ActiveModel::TestCase ], serializer.as_json) end + def test_sets_use_an_array_serializer + assert_equal Set.new.active_model_serializer, ActiveModel::ArraySerializer + end + class CustomBlog < Blog attr_accessor :public_posts, :public_user end From 5111615ac1ea86dc8a7eaa702903b679e03248e3 Mon Sep 17 00:00:00 2001 From: twinturbo Date: Sun, 15 Jul 2012 13:42:29 +0200 Subject: [PATCH 2/2] Actually test set serialization --- test/serializer_test.rb | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/test/serializer_test.rb b/test/serializer_test.rb index f740de59..5d832044 100644 --- a/test/serializer_test.rb +++ b/test/serializer_test.rb @@ -434,8 +434,20 @@ class SerializerTest < ActiveModel::TestCase ], serializer.as_json) end - def test_sets_use_an_array_serializer - assert_equal Set.new.active_model_serializer, ActiveModel::ArraySerializer + def test_sets_can_be_serialized + post1 = Post.new(:title => "Post1", :author => "Author1", :id => 1) + post2 = Post.new(:title => "Post2", :author => "Author2", :id => 2) + + set = Set.new + set << post1 + set << post2 + + serializer = set.active_model_serializer.new set, :each_serializer => CustomPostSerializer + + assert_equal([ + { :title => "Post1" }, + { :title => "Post2" } + ], serializer.as_json) end class CustomBlog < Blog