mirror of
https://github.com/ditkrg/active_model_serializers.git
synced 2026-01-24 23: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)
|
def method_missing(name, *args, &block)
|
||||||
object.send(name, *args, &block)
|
object.send(name, *args, &block)
|
||||||
end
|
end
|
||||||
|
|
||||||
def respond_to_missing?(name, include_private = false)
|
|
||||||
object.respond_to?(name, include_private)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
2
test/fixtures/poro.rb
vendored
2
test/fixtures/poro.rb
vendored
@ -52,7 +52,7 @@ end
|
|||||||
|
|
||||||
class ParentModel < PlainModel
|
class ParentModel < PlainModel
|
||||||
attributes :id, :name, :description
|
attributes :id, :name, :description
|
||||||
associations :child_models
|
associations :child_models, :child_model
|
||||||
end
|
end
|
||||||
class ChildModel < PlainModel
|
class ChildModel < PlainModel
|
||||||
attributes :id, :name
|
attributes :id, :name
|
||||||
|
|||||||
@ -5,6 +5,7 @@ module AMS
|
|||||||
class Serializer
|
class Serializer
|
||||||
class AttributesTest < Test
|
class AttributesTest < Test
|
||||||
class ParentModelSerializer < Serializer
|
class ParentModelSerializer < Serializer
|
||||||
|
# TODO: test :id is forbidden attribute name
|
||||||
attribute :name
|
attribute :name
|
||||||
attribute :description, key: :summary
|
attribute :description, key: :summary
|
||||||
end
|
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 Serializer
|
||||||
class RelationshipsTest < Test
|
class RelationshipsTest < Test
|
||||||
class ParentModelSerializer < Serializer
|
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_models, type: :comments, to: :many, ids: "object.child_models.map(&:id)"
|
||||||
|
relation :child_model, type: :comments, to: :one, id: "object.child_model.id"
|
||||||
end
|
end
|
||||||
|
|
||||||
def setup
|
def setup
|
||||||
super
|
super
|
||||||
@relation = ChildModel.new(id: 2, name: "comment")
|
|
||||||
@object = ParentModel.new(
|
@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_class = ParentModelSerializer
|
||||||
@serializer_instance = @serializer_class.new(@object)
|
@serializer_instance = @serializer_class.new(@object)
|
||||||
@ -22,6 +26,9 @@ module AMS
|
|||||||
expected_relations = {
|
expected_relations = {
|
||||||
child_models: {
|
child_models: {
|
||||||
data: [{ type: "comments", id: 2 }]
|
data: [{ type: "comments", id: 2 }]
|
||||||
|
},
|
||||||
|
child_model: {
|
||||||
|
data: { type: "comments", id: 1 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
assert_equal expected_relations, @serializer_instance.relations
|
assert_equal expected_relations, @serializer_instance.relations
|
||||||
@ -33,6 +40,30 @@ module AMS
|
|||||||
}
|
}
|
||||||
assert_equal expected, @serializer_instance.relationship_data(5, :bananas)
|
assert_equal expected, @serializer_instance.relationship_data(5, :bananas)
|
||||||
end
|
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
|
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