From c96095f6d7f2deae020ee8cc0d2f3e1d07194ab9 Mon Sep 17 00:00:00 2001 From: Tee Parham Date: Wed, 12 Jun 2013 14:27:54 -0600 Subject: [PATCH] move DefaultSerializer to a separate file, add tests --- lib/active_model/default_serializer.rb | 18 ++++++++++++++++++ lib/active_model/serializer.rb | 15 --------------- lib/active_model_serializers.rb | 1 + test/default_serializer_test.rb | 25 +++++++++++++++++++++++++ 4 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 lib/active_model/default_serializer.rb create mode 100644 test/default_serializer_test.rb diff --git a/lib/active_model/default_serializer.rb b/lib/active_model/default_serializer.rb new file mode 100644 index 000000000..fe413658d --- /dev/null +++ b/lib/active_model/default_serializer.rb @@ -0,0 +1,18 @@ +module ActiveModel + # DefaultSerializer + # + # Provides a constant interface for all items, particularly + # for ArraySerializer. + class DefaultSerializer + attr_reader :object, :options + + def initialize(object, options={}) + @object, @options = object, options + end + + def serializable_hash + @object.as_json(@options) + end + end + +end \ No newline at end of file diff --git a/lib/active_model/serializer.rb b/lib/active_model/serializer.rb index e2a6228b6..68bb01cf2 100644 --- a/lib/active_model/serializer.rb +++ b/lib/active_model/serializer.rb @@ -457,19 +457,4 @@ def default_embed_options end end - # DefaultSerializer - # - # Provides a constant interface for all items, particularly - # for ArraySerializer. - class DefaultSerializer - attr_reader :object, :options - - def initialize(object, options={}) - @object, @options = object, options - end - - def serializable_hash - @object.as_json(@options) - end - end end diff --git a/lib/active_model_serializers.rb b/lib/active_model_serializers.rb index 4ae2d743a..896f936a8 100644 --- a/lib/active_model_serializers.rb +++ b/lib/active_model_serializers.rb @@ -3,6 +3,7 @@ require "active_support/notifications" require "active_model" require "active_model/array_serializer" +require "active_model/default_serializer" require "active_model/serializer" require "active_model/serializer/associations" require "set" diff --git a/test/default_serializer_test.rb b/test/default_serializer_test.rb new file mode 100644 index 000000000..d1066533e --- /dev/null +++ b/test/default_serializer_test.rb @@ -0,0 +1,25 @@ +require "test_helper" +require "test_fakes" + +class DefaultSerializerTest < ActiveModel::TestCase + + def test_object_with_no_options + object = Model.new + serializer = ActiveModel::DefaultSerializer.new(object) + assert_equal object.as_json, serializer.serializable_hash + end + + def test_object_with_options + object = Model.new + serializer = ActiveModel::DefaultSerializer.new(object, something: "hello") + assert_equal({something: "hello"}, serializer.options) + assert_equal object.as_json, serializer.serializable_hash + end + + def test_array + array = [ {name: "Fred"} ] + serializer = ActiveModel::DefaultSerializer.new(array) + assert_equal array.as_json, serializer.serializable_hash + end + +end