Restrict serializable_hash to accepted options (#1647)

Restrict tests/impl from passing AMS options into serializable_hash
This commit is contained in:
Benjamin Fleischer
2016-04-11 13:10:18 -05:00
parent aec284844f
commit aad7779a3f
10 changed files with 109 additions and 108 deletions

View File

@@ -8,9 +8,11 @@ module ActiveModelSerializers
context = Minitest::Mock.new
context.expect(:request_url, URI)
context.expect(:query_parameters, {})
@options = {}
@options[:key_transform] = key_transform if key_transform
@options[:serialization_context] = context
options = {}
options[:key_transform] = key_transform if key_transform
options[:serialization_context] = context
serializer = CustomBlogSerializer.new(@blog)
@adapter = ActiveModelSerializers::Adapter::Json.new(serializer, options)
end
Post = Class.new(::Model)
@@ -18,24 +20,22 @@ module ActiveModelSerializers
attributes :id, :title, :body, :publish_at
end
def setup
setup do
ActionController::Base.cache_store.clear
@blog = Blog.new(id: 1, name: 'My Blog!!', special_attribute: 'neat')
serializer = CustomBlogSerializer.new(@blog)
@adapter = ActiveModelSerializers::Adapter::Json.new(serializer)
end
def test_transform_default
mock_request
assert_equal({
blog: { id: 1, special_attribute: 'neat', articles: nil }
}, @adapter.serializable_hash(@options))
}, @adapter.serializable_hash)
end
def test_transform_global_config
mock_request
result = with_config(key_transform: :camel_lower) do
@adapter.serializable_hash(@options)
@adapter.serializable_hash
end
assert_equal({
blog: { id: 1, specialAttribute: 'neat', articles: nil }
@@ -45,7 +45,7 @@ module ActiveModelSerializers
def test_transform_serialization_ctx_overrides_global_config
mock_request(:camel)
result = with_config(key_transform: :camel_lower) do
@adapter.serializable_hash(@options)
@adapter.serializable_hash
end
assert_equal({
Blog: { Id: 1, SpecialAttribute: 'neat', Articles: nil }
@@ -56,7 +56,7 @@ module ActiveModelSerializers
mock_request(:blam)
result = nil
assert_raises NoMethodError do
result = @adapter.serializable_hash(@options)
result = @adapter.serializable_hash
end
end
@@ -64,28 +64,28 @@ module ActiveModelSerializers
mock_request(:dash)
assert_equal({
blog: { id: 1, :"special-attribute" => 'neat', articles: nil }
}, @adapter.serializable_hash(@options))
}, @adapter.serializable_hash)
end
def test_transform_unaltered
mock_request(:unaltered)
assert_equal({
blog: { id: 1, special_attribute: 'neat', articles: nil }
}, @adapter.serializable_hash(@options))
}, @adapter.serializable_hash)
end
def test_transform_camel
mock_request(:camel)
assert_equal({
Blog: { Id: 1, SpecialAttribute: 'neat', Articles: nil }
}, @adapter.serializable_hash(@options))
}, @adapter.serializable_hash)
end
def test_transform_camel_lower
mock_request(:camel_lower)
assert_equal({
blog: { id: 1, specialAttribute: 'neat', articles: nil }
}, @adapter.serializable_hash(@options))
}, @adapter.serializable_hash)
end
end
end