mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-22 22:06:50 +00:00
Improve test coverage
This commit is contained in:
parent
57052d646d
commit
e5cbe799f1
@ -333,9 +333,5 @@ module AMS
|
||||
def method_missing(name, *args, &block)
|
||||
object.send(name, *args, &block)
|
||||
end
|
||||
|
||||
def respond_to_missing?(name, include_private = false)
|
||||
object.respond_to?(name, include_private)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
2
test/fixtures/poro.rb
vendored
2
test/fixtures/poro.rb
vendored
@ -52,7 +52,7 @@ end
|
||||
|
||||
class ParentModel < PlainModel
|
||||
attributes :id, :name, :description
|
||||
associations :child_models
|
||||
associations :child_models, :child_model
|
||||
end
|
||||
class ChildModel < PlainModel
|
||||
attributes :id, :name
|
||||
|
||||
@ -5,6 +5,7 @@ module AMS
|
||||
class Serializer
|
||||
class AttributesTest < Test
|
||||
class ParentModelSerializer < Serializer
|
||||
# TODO: test :id is forbidden attribute name
|
||||
attribute :name
|
||||
attribute :description, key: :summary
|
||||
end
|
||||
|
||||
31
test/unit/serializer/object_delegation_test.rb
Normal file
31
test/unit/serializer/object_delegation_test.rb
Normal file
@ -0,0 +1,31 @@
|
||||
# frozen_string_literal: true
|
||||
require "test_helper"
|
||||
|
||||
module AMS
|
||||
class Serializer
|
||||
class ObjectDelegationTest < Test
|
||||
class ParentModelSerializer < Serializer
|
||||
end
|
||||
|
||||
def setup
|
||||
super
|
||||
@object = ParentModel.new(id: 1)
|
||||
class << @object
|
||||
def delegated?
|
||||
true
|
||||
end
|
||||
end
|
||||
@serializer_class = ParentModelSerializer
|
||||
@serializer_instance = @serializer_class.new(@object)
|
||||
end
|
||||
|
||||
def test_model_delegates_method_to_object
|
||||
assert @serializer_instance.delegated?
|
||||
end
|
||||
|
||||
def test_model_delegates_respond_to_object
|
||||
refute @serializer_instance.respond_to?(:not_delegated?)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -5,14 +5,18 @@ module AMS
|
||||
class Serializer
|
||||
class RelationshipsTest < Test
|
||||
class ParentModelSerializer < Serializer
|
||||
# TODO: test to: :many without :ids option
|
||||
# TODO: test to: :one without :id option
|
||||
# TODO: test to: :unknown_option raises ArgumentError
|
||||
relation :child_models, type: :comments, to: :many, ids: "object.child_models.map(&:id)"
|
||||
relation :child_model, type: :comments, to: :one, id: "object.child_model.id"
|
||||
end
|
||||
|
||||
def setup
|
||||
super
|
||||
@relation = ChildModel.new(id: 2, name: "comment")
|
||||
@object = ParentModel.new(
|
||||
child_models: [@relation]
|
||||
child_models: [ ChildModel.new(id: 2, name: "comments") ],
|
||||
child_model: ChildModel.new(id: 1, name: "comment")
|
||||
)
|
||||
@serializer_class = ParentModelSerializer
|
||||
@serializer_instance = @serializer_class.new(@object)
|
||||
@ -22,6 +26,9 @@ module AMS
|
||||
expected_relations = {
|
||||
child_models: {
|
||||
data: [{ type: "comments", id: 2 }]
|
||||
},
|
||||
child_model: {
|
||||
data: { type: "comments", id: 1 }
|
||||
}
|
||||
}
|
||||
assert_equal expected_relations, @serializer_instance.relations
|
||||
@ -33,6 +40,30 @@ module AMS
|
||||
}
|
||||
assert_equal expected, @serializer_instance.relationship_data(5, :bananas)
|
||||
end
|
||||
|
||||
def test_model_instance_relationship_to_one
|
||||
expected = {
|
||||
data: { id: @object.child_model.id, type: "comments" }
|
||||
}
|
||||
assert_equal expected, @serializer_instance.child_model
|
||||
end
|
||||
|
||||
def test_model_instance_relationship_to_one_id
|
||||
expected = @object.child_model.id
|
||||
assert_equal expected, @serializer_instance.related_child_model_id
|
||||
end
|
||||
|
||||
def test_model_instance_relationship_to_many
|
||||
expected = {
|
||||
data: [{ id: @object.child_models.first.id, type: "comments" }]
|
||||
}
|
||||
assert_equal expected, @serializer_instance.child_models
|
||||
end
|
||||
|
||||
def test_model_instance_relationship_to_many_ids
|
||||
expected = @object.child_models.map(&:id)
|
||||
assert_equal expected, @serializer_instance.related_child_models_ids
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
24
test/unit/serializer/type_test.rb
Normal file
24
test/unit/serializer/type_test.rb
Normal file
@ -0,0 +1,24 @@
|
||||
# frozen_string_literal: true
|
||||
require "test_helper"
|
||||
|
||||
module AMS
|
||||
class Serializer
|
||||
class TypeTest < Test
|
||||
class ParentModelSerializer < Serializer
|
||||
type :something
|
||||
end
|
||||
|
||||
def setup
|
||||
super
|
||||
@object = ParentModel.new(id: 1,)
|
||||
@serializer_class = ParentModelSerializer
|
||||
@serializer_instance = @serializer_class.new(@object)
|
||||
end
|
||||
|
||||
def test_model_instance_type
|
||||
expected_type = :something
|
||||
assert_equal expected_type, @serializer_instance.type
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue
Block a user