Add setup method and Setting object to configure AMS

This commit is contained in:
Santiago Pastorino 2013-09-04 21:01:13 -03:00
parent 29148cbe1c
commit 513e7f2166
3 changed files with 81 additions and 0 deletions

View File

@ -1,6 +1,7 @@
require 'active_model/array_serializer'
require 'active_model/serializable'
require 'active_model/serializer/associations'
require 'active_model/serializer/settings'
module ActiveModel
class Serializer
@ -12,6 +13,10 @@ module ActiveModel
base._associations = []
end
def setup
yield SETTINGS
end
def serializer_for(resource)
if resource.respond_to?(:to_ary)
ArraySerializer

View File

@ -0,0 +1,27 @@
module ActiveModel
class Serializer
class Settings
def initialize
@data = {}
end
def [](key)
@data[key.to_s]
end
def []=(key, value)
@data[key.to_s] = value
end
def each(&block)
@data.each(&block)
end
def clear
@data.clear
end
end
SETTINGS = Settings.new
end
end

View File

@ -0,0 +1,49 @@
require 'test_helper'
module ActiveModel
class Serializer
class Settings
class Test < ActiveModel::TestCase
def test_settings_const_is_an_instance_of_settings
assert_kind_of Settings, SETTINGS
end
def test_settings_instance
settings = Settings.new
settings[:setting1] = 'value1'
assert_equal 'value1', settings[:setting1]
end
def test_each_settings
settings = Settings.new
settings['setting1'] = 'value1'
settings['setting2'] = 'value2'
actual = {}
settings.each do |k, v|
actual[k] = v
end
assert_equal({ 'setting1' => 'value1', 'setting2' => 'value2' }, actual)
end
end
class SetupTest < ActiveModel::TestCase
def test_setup
ActiveModel::Serializer.setup do |settings|
settings[:a] = 'v1'
settings[:b] = 'v2'
end
assert_equal 'v1', SETTINGS[:a]
assert_equal 'v2', SETTINGS[:b]
ensure
SETTINGS.clear
end
end
end
end
end