mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 06:16:50 +00:00
Add setup method and Setting object to configure AMS
This commit is contained in:
parent
29148cbe1c
commit
513e7f2166
@ -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
|
||||
|
||||
27
lib/active_model/serializer/settings.rb
Normal file
27
lib/active_model/serializer/settings.rb
Normal 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
|
||||
49
test/unit/active_model/serializer/settings_test.rb
Normal file
49
test/unit/active_model/serializer/settings_test.rb
Normal 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
|
||||
Loading…
Reference in New Issue
Block a user