* Rename NullAdapter to SimpleAdapter

* Introduce abstract Adapter class
* Organaze test structure to match convemtions
This commit is contained in:
Tema Bolshakov 2014-08-27 08:17:36 +04:00
parent 0c13956311
commit f00fe5595d
7 changed files with 52 additions and 10 deletions

View File

@ -12,7 +12,7 @@ module ActionController
if serializer
# omg hax
object = serializer.new(resource)
adapter = ActiveModel::Serializer::Adapter::NullAdapter.new(object)
adapter = ActiveModel::Serializer::Adapter::SimpleAdapter.new(object)
super(adapter, options)
else

View File

@ -3,6 +3,7 @@ module ActiveModel
extend ActiveSupport::Autoload
autoload :Configuration
autoload :ArraySerializer
autoload :Adapter
include Configuration
class << self

View File

@ -0,0 +1,20 @@
module ActiveModel
class Serializer
class Adapter
extend ActiveSupport::Autoload
autoload :SimpleAdapter
def initialize(serializer)
@attributes = serializer.attributes
end
def serializable_hash(options = {})
raise NotImplementedError, 'This is abstract method. Should be implemented at concrete adapter.'
end
def to_json(options = {})
raise NotImplementedError, 'This is abstract method. Should be implemented at concrete adapter.'
end
end
end
end

View File

@ -1,11 +1,7 @@
module ActiveModel
class Serializer
class Adapter
class NullAdapter
def initialize(adapter)
@attributes = adapter.attributes
end
class SimpleAdapter < Adapter
def to_json(options={})
@attributes.each_with_object({}) do |(attr, value), h|
h[attr] = value

View File

@ -1,7 +1,7 @@
require "active_model"
require "active_model/serializer/version"
require "active_model/serializer"
require "active_model/serializer/adapter/null_adapter"
require "active_model/serializer/adapter/simple_adapter"
begin
require 'action_controller'

View File

@ -3,15 +3,15 @@ require 'test_helper'
module ActiveModel
class Serializer
class Adapter
class NullAdapterTest < Minitest::Test
class SimpleAdapterTest < Minitest::Test
def setup
@profile = Profile.new({ name: 'Name 1', description: 'Description 1', comments: 'Comments 1' })
@profile_serializer = ProfileSerializer.new(@profile)
@adapter = NullAdapter.new(@profile_serializer)
@adapter = SimpleAdapter.new(@profile_serializer)
end
def test_null_adapter
def test_simple_adapter
assert_equal('{"name":"Name 1","description":"Description 1"}',
@adapter.to_json)

25
test/adapter_test.rb Normal file
View File

@ -0,0 +1,25 @@
require 'test_helper'
module ActiveModel
class Serializer
class AdapterTest < Minitest::Test
def setup
profile = Profile.new
serializer = ProfileSerializer.new(profile)
@adapter = ActiveModel::Serializer::Adapter.new(serializer)
end
def test_serializable_hash_is_abstract_method
assert_raises(NotImplementedError) do
@adapter.serializable_hash(only: [:name])
end
end
def test_serializable_hash_is_abstract_method
assert_raises(NotImplementedError) do
@adapter.to_json(only: [:name])
end
end
end
end
end