mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
48 lines
1.5 KiB
Ruby
48 lines
1.5 KiB
Ruby
require 'test_helper'
|
|
|
|
module ActiveModel
|
|
class Serializer
|
|
class AttributeTest < Minitest::Test
|
|
def setup
|
|
@blog = Blog.new({ id: 1, name: 'AMS Hints' })
|
|
@blog_serializer = AlternateBlogSerializer.new(@blog)
|
|
end
|
|
|
|
def test_attributes_definition
|
|
assert_equal([:id, :title],
|
|
@blog_serializer.class._attributes)
|
|
end
|
|
|
|
def test_json_serializable_hash
|
|
adapter = ActiveModel::Serializer::Adapter::Json.new(@blog_serializer)
|
|
assert_equal({blog: { id:1, title:"AMS Hints"}}, adapter.serializable_hash)
|
|
end
|
|
|
|
def test_attribute_inheritance_with_key
|
|
inherited_klass = Class.new(AlternateBlogSerializer)
|
|
blog_serializer = inherited_klass.new(@blog)
|
|
adapter = ActiveModel::Serializer::Adapter::FlattenJson.new(blog_serializer)
|
|
assert_equal({:id=>1, :title=>"AMS Hints"}, adapter.serializable_hash)
|
|
end
|
|
|
|
def test_multiple_calls_with_the_same_attribute
|
|
serializer_class = Class.new(ActiveModel::Serializer) do
|
|
attribute :title
|
|
attribute :title
|
|
end
|
|
|
|
assert_equal([:title], serializer_class._attributes)
|
|
end
|
|
|
|
def test_id_attribute_override
|
|
serializer = Class.new(ActiveModel::Serializer) do
|
|
attribute :name, key: :id
|
|
end
|
|
|
|
adapter = ActiveModel::Serializer::Adapter::Json.new(serializer.new(@blog))
|
|
assert_equal({ blog: { id: "AMS Hints" } }, adapter.serializable_hash)
|
|
end
|
|
end
|
|
end
|
|
end
|