active_model_serializers/test/adapter_test.rb
Tema Bolshakov 6cc4fa0258 * Configure adapter using ActiveModel::Serializer.config.adapter
* Get adapter instance using ActiveModel::Serializer::Adapter.adapter_for(serializer)
2014-08-27 09:05:28 +04:00

75 lines
2.1 KiB
Ruby

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_to_json_is_abstract_method
assert_raises(NotImplementedError) do
@adapter.to_json(only: [:name])
end
end
end
class AdapterForTest < Minitest::Test
def setup
profile = Profile.new
@serializer = ProfileSerializer.new(profile)
@previous_adapter = ActiveModel::Serializer.config.adapter
end
def teardown
ActiveModel::Serializer.config.adapter = @previous_adapter
end
def test_returns_default_adapter
adapter = Adapter.adapter_for(@serializer)
assert_kind_of ActiveModel::Serializer::Adapter::SimpleAdapter, adapter
end
def test_overwrite_adapter_with_symbol
ActiveModel::Serializer.config.adapter = :null
adapter = Adapter.adapter_for(@serializer)
assert_kind_of ActiveModel::Serializer::Adapter::NullAdapter, adapter
ensure
end
def test_overwrite_adapter_with_class
ActiveModel::Serializer.config.adapter = ActiveModel::Serializer::Adapter::NullAdapter
adapter = Adapter.adapter_for(@serializer)
assert_kind_of ActiveModel::Serializer::Adapter::NullAdapter, adapter
end
def test_raises_exception_if_invalid_symbol_given
ActiveModel::Serializer.config.adapter = :unknown
assert_raises ArgumentError do
Adapter.adapter_for(@serializer)
end
end
def test_raises_exception_if_it_does_not_know_hot_to_infer_adapter
ActiveModel::Serializer.config.adapter = 42
assert_raises ArgumentError do
Adapter.adapter_for(@serializer)
end
end
end
end
end