Skip to content

Commit

Permalink
* Rename NullAdapter to SimpleAdapter
Browse files Browse the repository at this point in the history
* Introduce abstract Adapter class
* Organaze test structure to match convemtions
  • Loading branch information
bolshakov committed Aug 27, 2014
1 parent 0c13956 commit f00fe55
Show file tree
Hide file tree
Showing 7 changed files with 52 additions and 10 deletions.
2 changes: 1 addition & 1 deletion lib/action_controller/serialization.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def _render_option_json(resource, options)
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
Expand Down
1 change: 1 addition & 0 deletions lib/active_model/serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ class Serializer
extend ActiveSupport::Autoload
autoload :Configuration
autoload :ArraySerializer
autoload :Adapter
include Configuration

class << self
Expand Down
20 changes: 20 additions & 0 deletions lib/active_model/serializer/adapter.rb
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion lib/active_model_serializers.rb
Original file line number Diff line number Diff line change
@@ -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'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
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)

Expand Down
25 changes: 25 additions & 0 deletions test/adapter_test.rb
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit f00fe55

Please sign in to comment.