From 56725b45a68ee13b1e5fa1d009a57c91bc14bbd0 Mon Sep 17 00:00:00 2001 From: Tema Bolshakov Date: Wed, 27 Aug 2014 08:23:13 +0400 Subject: [PATCH] Add NullAdapater --- lib/active_model/serializer/adapter.rb | 1 + .../serializer/adapter/null_adapter.rb | 15 +++++++++++++ test/adapter/null_adapter_test.rb | 21 +++++++++++++++++++ test/adapter_test.rb | 2 +- 4 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 lib/active_model/serializer/adapter/null_adapter.rb create mode 100644 test/adapter/null_adapter_test.rb diff --git a/lib/active_model/serializer/adapter.rb b/lib/active_model/serializer/adapter.rb index e35c4595..299a3d1f 100644 --- a/lib/active_model/serializer/adapter.rb +++ b/lib/active_model/serializer/adapter.rb @@ -3,6 +3,7 @@ module ActiveModel class Adapter extend ActiveSupport::Autoload autoload :SimpleAdapter + autoload :NullAdapter def initialize(serializer) @attributes = serializer.attributes diff --git a/lib/active_model/serializer/adapter/null_adapter.rb b/lib/active_model/serializer/adapter/null_adapter.rb new file mode 100644 index 00000000..31b8d4ce --- /dev/null +++ b/lib/active_model/serializer/adapter/null_adapter.rb @@ -0,0 +1,15 @@ +module ActiveModel + class Serializer + class Adapter + class NullAdapter < Adapter + def serializable_hash(options = {}) + {} + end + + def to_json(options = {}) + serializable_hash.to_json + end + end + end + end +end diff --git a/test/adapter/null_adapter_test.rb b/test/adapter/null_adapter_test.rb new file mode 100644 index 00000000..fd56b7ba --- /dev/null +++ b/test/adapter/null_adapter_test.rb @@ -0,0 +1,21 @@ +require 'test_helper' + +module ActiveModel + class Serializer + class Adapter + class NullAdapterTest < Minitest::Test + def setup + profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' }) + serializer = ProfileSerializer.new(profile) + + @adapter = NullAdapter.new(serializer) + end + + def test_it_returns_empty_json + assert_equal('{}', @adapter.to_json) + end + end + end + end +end + diff --git a/test/adapter_test.rb b/test/adapter_test.rb index f9a78773..bf72aabe 100644 --- a/test/adapter_test.rb +++ b/test/adapter_test.rb @@ -15,7 +15,7 @@ module ActiveModel end end - def test_serializable_hash_is_abstract_method + def test_to_json_is_abstract_method assert_raises(NotImplementedError) do @adapter.to_json(only: [:name]) end