mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-23 22:36:50 +00:00
98 lines
3.1 KiB
Ruby
98 lines
3.1 KiB
Ruby
require 'test_helper'
|
|
|
|
module ActiveModel
|
|
class Serializer
|
|
class ArraySerializerTest < Minitest::Test
|
|
def setup
|
|
@comment = Comment.new
|
|
@post = Post.new
|
|
@resource = build_named_collection @comment, @post
|
|
@serializer = ArraySerializer.new(@resource, {some: :options})
|
|
end
|
|
|
|
def build_named_collection(*resource)
|
|
resource.define_singleton_method(:name){ 'MeResource' }
|
|
resource
|
|
end
|
|
|
|
def test_respond_to_each
|
|
assert_respond_to @serializer, :each
|
|
end
|
|
|
|
def test_each_object_should_be_serialized_with_appropriate_serializer
|
|
serializers = @serializer.to_a
|
|
|
|
assert_kind_of CommentSerializer, serializers.first
|
|
assert_kind_of Comment, serializers.first.object
|
|
|
|
assert_kind_of PostSerializer, serializers.last
|
|
assert_kind_of Post, serializers.last.object
|
|
|
|
assert_equal serializers.last.custom_options[:some], :options
|
|
end
|
|
|
|
def test_serializer_option_not_passed_to_each_serializer
|
|
serializers = ArraySerializer.new([@post], {serializer: PostSerializer}).to_a
|
|
|
|
refute serializers.first.custom_options.key?(:serializer)
|
|
end
|
|
|
|
def test_meta_and_meta_key_attr_readers
|
|
meta_content = {meta: "the meta", meta_key: "the meta key"}
|
|
@serializer = ArraySerializer.new([@comment, @post], meta_content)
|
|
|
|
assert_equal @serializer.meta, "the meta"
|
|
assert_equal @serializer.meta_key, "the meta key"
|
|
end
|
|
|
|
def test_root_default
|
|
@serializer = ArraySerializer.new([@comment, @post])
|
|
assert_equal @serializer.root, nil
|
|
end
|
|
|
|
def test_root
|
|
expected = 'custom_root'
|
|
@serializer = ArraySerializer.new([@comment, @post], root: expected)
|
|
assert_equal @serializer.root, expected
|
|
end
|
|
|
|
def test_root_with_no_serializers
|
|
expected = 'custom_root'
|
|
@serializer = ArraySerializer.new([], root: expected)
|
|
assert_equal @serializer.root, expected
|
|
end
|
|
|
|
def test_json_key
|
|
assert_equal @serializer.json_key, 'comments'
|
|
end
|
|
|
|
def test_json_key_with_resource_with_name_and_no_serializers
|
|
serializer = ArraySerializer.new(build_named_collection)
|
|
assert_equal serializer.json_key, 'me_resources'
|
|
end
|
|
|
|
def test_json_key_with_resource_with_nil_name_and_no_serializers
|
|
resource = []
|
|
resource.define_singleton_method(:name){ nil }
|
|
serializer = ArraySerializer.new(resource)
|
|
assert_equal serializer.json_key, nil
|
|
end
|
|
|
|
def test_json_key_with_resource_without_name_and_no_serializers
|
|
serializer = ArraySerializer.new([])
|
|
assert_equal serializer.json_key, nil
|
|
end
|
|
|
|
def test_json_key_with_root
|
|
serializer = ArraySerializer.new(@resource, root: 'custom_root')
|
|
assert_equal serializer.json_key, 'custom_roots'
|
|
end
|
|
|
|
def test_json_key_with_root_and_no_serializers
|
|
serializer = ArraySerializer.new(build_named_collection, root: 'custom_root')
|
|
assert_equal serializer.json_key, 'custom_roots'
|
|
end
|
|
end
|
|
end
|
|
end
|