Skip to content

Commit 5663054

Browse files
committed
add to_kwargs tests
1 parent 00927d2 commit 5663054

1 file changed

Lines changed: 199 additions & 0 deletions

File tree

tests/type/test_definition.py

Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
from graphql.language import (
1313
EnumTypeDefinitionNode,
1414
EnumTypeExtensionNode,
15+
EnumValueDefinitionNode,
1516
EnumValueNode,
17+
FieldDefinitionNode,
1618
FieldNode,
1719
FragmentDefinitionNode,
1820
InputObjectTypeDefinitionNode,
@@ -89,6 +91,10 @@ def _stub_type() -> NamedTypeNode:
8991
NonNullListOfScalars = GraphQLNonNull(ListOfScalarsType)
9092

9193

94+
def pass_through(arg: Any) -> Any:
95+
return arg # pragma: no cover
96+
97+
9298
def describe_type_system_scalars():
9399
def defines_a_scalar_type():
94100
scalar = GraphQLScalarType("SomeScalar")
@@ -108,6 +114,25 @@ def defines_a_scalar_type():
108114
"extension_ast_nodes": (),
109115
}
110116

117+
def can_be_converted_to_a_configuration_object():
118+
ast_node = ScalarTypeDefinitionNode(name=_stub_name())
119+
extension_ast_node = ScalarTypeExtensionNode(name=_stub_name())
120+
some_scalar_kwargs = {
121+
"name": "SomeScalar",
122+
"description": "SomeScalar description.",
123+
"specified_by_url": "https://example.com/foo_spec",
124+
"serialize": pass_through,
125+
"parse_value": pass_through,
126+
"parse_literal": pass_through,
127+
"parse_const_literal": pass_through,
128+
"value_to_literal": pass_through,
129+
"extensions": {"some_extension": "extension"},
130+
"ast_node": ast_node,
131+
"extension_ast_nodes": (extension_ast_node,),
132+
}
133+
some_scalar = GraphQLScalarType(**some_scalar_kwargs) # type: ignore
134+
assert some_scalar.to_kwargs() == some_scalar_kwargs
135+
111136
def accepts_a_scalar_type_defining_serialize():
112137
def serialize(_value):
113138
pass
@@ -334,6 +359,44 @@ def defines_an_object_type():
334359
"extension_ast_nodes": (),
335360
}
336361

362+
def can_be_converted_to_a_configuration_object():
363+
ast_node = ObjectTypeDefinitionNode(name=_stub_name())
364+
extension_ast_node = ObjectTypeExtensionNode(name=_stub_name())
365+
arg_ast_node = InputValueDefinitionNode(name=_stub_name(), type=_stub_type())
366+
field_ast_node = FieldDefinitionNode(name=_stub_name(), type=_stub_type())
367+
some_object_kwargs = {
368+
"name": "SomeObject",
369+
"description": "SomeObject description.",
370+
"interfaces": (InterfaceType,),
371+
"fields": {
372+
"f": GraphQLField(
373+
ScalarType,
374+
args={
375+
"input": GraphQLArgument(
376+
ScalarType,
377+
default_value="DefaultValue",
378+
description="Argument description.",
379+
deprecation_reason="Argument deprecation reason.",
380+
extensions={"some_extension": "extension"},
381+
ast_node=arg_ast_node,
382+
)
383+
},
384+
resolve=pass_through,
385+
subscribe=pass_through,
386+
description="Field description.",
387+
deprecation_reason="Field deprecation reason.",
388+
extensions={"some_extension": "extension"},
389+
ast_node=field_ast_node,
390+
)
391+
},
392+
"is_type_of": pass_through,
393+
"extensions": {"some_extension": "extension"},
394+
"ast_node": ast_node,
395+
"extension_ast_nodes": (extension_ast_node,),
396+
}
397+
some_object = GraphQLObjectType(**some_object_kwargs) # type: ignore
398+
assert some_object.to_kwargs() == some_object_kwargs
399+
337400
def does_not_mutate_passed_field_definitions():
338401
output_fields = {
339402
"field1": GraphQLField(ScalarType),
@@ -583,6 +646,43 @@ def defines_an_interface_type():
583646
"extension_ast_nodes": (),
584647
}
585648

649+
def can_be_converted_to_a_configuration_object():
650+
ast_node = InterfaceTypeDefinitionNode(name=_stub_name())
651+
arg_ast_node = InputValueDefinitionNode(name=_stub_name(), type=_stub_type())
652+
field_ast_node = FieldDefinitionNode(name=_stub_name(), type=_stub_type())
653+
some_interface_kwargs = {
654+
"name": "SomeInterface",
655+
"description": "SomeInterface description.",
656+
"interfaces": (InterfaceType,),
657+
"fields": {
658+
"f": GraphQLField(
659+
ScalarType,
660+
args={
661+
"input": GraphQLArgument(
662+
ScalarType,
663+
default_value_literal=IntValueNode(value="10"),
664+
description="Argument description.",
665+
deprecation_reason="Argument deprecation reason.",
666+
extensions={"some_extension": "extension"},
667+
ast_node=arg_ast_node,
668+
)
669+
},
670+
resolve=pass_through,
671+
subscribe=pass_through,
672+
description="Field description.",
673+
deprecation_reason="Field deprecation reason.",
674+
extensions={"some_extension": "extension"},
675+
ast_node=field_ast_node,
676+
)
677+
},
678+
"resolve_type": pass_through,
679+
"extensions": {},
680+
"ast_node": ast_node,
681+
"extension_ast_nodes": (),
682+
}
683+
some_interface = GraphQLInterfaceType(**some_interface_kwargs) # type: ignore
684+
assert some_interface.to_kwargs() == some_interface_kwargs
685+
586686
def accepts_an_interface_type_defining_resolve_type():
587687
def resolve_type(_obj, _info, _type):
588688
pass
@@ -696,6 +796,32 @@ def interfaces():
696796

697797

698798
def describe_type_system_unions():
799+
def can_be_converted_from_a_minimal_configuration_object():
800+
some_union = GraphQLUnionType("SomeUnion", [])
801+
assert some_union.to_kwargs() == {
802+
"name": "SomeUnion",
803+
"description": None,
804+
"types": (),
805+
"resolve_type": None,
806+
"extensions": {},
807+
"ast_node": None,
808+
"extension_ast_nodes": (),
809+
}
810+
811+
def can_be_converted_to_a_configuration_object():
812+
ast_node = UnionTypeDefinitionNode(name=_stub_name())
813+
some_union_kwargs = {
814+
"name": "SomeUnion",
815+
"description": "SomeUnion description.",
816+
"types": (ObjectType,),
817+
"resolve_type": pass_through,
818+
"extensions": {},
819+
"ast_node": ast_node,
820+
"extension_ast_nodes": (),
821+
}
822+
some_union = GraphQLUnionType(**some_union_kwargs) # type: ignore
823+
assert some_union.to_kwargs() == some_union_kwargs
824+
699825
def accepts_a_union_type_defining_resolve_type():
700826
assert GraphQLUnionType("SomeUnion", [ObjectType])
701827

@@ -750,6 +876,40 @@ def types():
750876

751877

752878
def describe_type_system_enums():
879+
def can_be_converted_from_a_minimal_configuration_object():
880+
some_enum = GraphQLEnumType("SomeEnum", {})
881+
assert some_enum.to_kwargs() == {
882+
"name": "SomeEnum",
883+
"description": None,
884+
"values": {},
885+
"extensions": {},
886+
"ast_node": None,
887+
"extension_ast_nodes": (),
888+
}
889+
890+
def can_be_converted_to_a_configuration_object():
891+
ast_node = EnumTypeDefinitionNode(name=_stub_name())
892+
extension_ast_node = EnumTypeExtensionNode(name=_stub_name())
893+
value_ast_node = EnumValueDefinitionNode(name=_stub_name())
894+
some_enum_kwargs = {
895+
"name": "SomeEnum",
896+
"description": "SomeEnum description.",
897+
"values": {
898+
"FOO": GraphQLEnumValue(
899+
"foo",
900+
description="FOO description.",
901+
deprecation_reason="Value deprecation reason.",
902+
extensions={"some_extension": "extension"},
903+
ast_node=value_ast_node,
904+
)
905+
},
906+
"extensions": {"some_extension": "extension"},
907+
"ast_node": ast_node,
908+
"extension_ast_nodes": (extension_ast_node,),
909+
}
910+
some_enum = GraphQLEnumType(**some_enum_kwargs) # type: ignore
911+
assert some_enum.to_kwargs() == some_enum_kwargs
912+
753913
def defines_an_enum_using_a_dict():
754914
enum_type = GraphQLEnumType("SomeEnum", {"RED": 1, "BLUE": 2})
755915
assert enum_type.values == {
@@ -1040,6 +1200,45 @@ def can_compare_enum_values():
10401200

10411201

10421202
def describe_type_system_input_objects():
1203+
def can_be_converted_from_a_minimal_configuration_object():
1204+
some_input_object = GraphQLInputObjectType("SomeInputObject", {})
1205+
assert some_input_object.to_kwargs() == {
1206+
"name": "SomeInputObject",
1207+
"description": None,
1208+
"fields": {},
1209+
"out_type": None, # the out_type is an extension of GraphQL.js
1210+
"is_one_of": False,
1211+
"extensions": {},
1212+
"ast_node": None,
1213+
"extension_ast_nodes": (),
1214+
}
1215+
1216+
def can_be_converted_to_a_configuration_object():
1217+
ast_node = InputObjectTypeDefinitionNode(name=_stub_name())
1218+
extension_ast_node = InputObjectTypeExtensionNode(name=_stub_name())
1219+
field_ast_node = InputValueDefinitionNode(name=_stub_name(), type=_stub_type())
1220+
some_input_object_kwargs = {
1221+
"name": "SomeInputObject",
1222+
"description": "SomeInputObject description.",
1223+
"fields": {
1224+
"input": GraphQLInputField(
1225+
ScalarType,
1226+
default_value="DefaultValue",
1227+
description="Input field description.",
1228+
deprecation_reason="Input field deprecation reason.",
1229+
extensions={"some_extension": "extension"},
1230+
ast_node=field_ast_node,
1231+
)
1232+
},
1233+
"out_type": None, # the out_type is an extension of GraphQL.js
1234+
"is_one_of": True,
1235+
"extensions": {"some_extension": "extension"},
1236+
"ast_node": ast_node,
1237+
"extension_ast_nodes": (extension_ast_node,),
1238+
}
1239+
some_input_object = GraphQLInputObjectType(**some_input_object_kwargs) # type: ignore
1240+
assert some_input_object.to_kwargs() == some_input_object_kwargs
1241+
10431242
def accepts_an_input_object_type_with_a_description():
10441243
description = "nice input object"
10451244
input_obj_type = GraphQLInputObjectType(

0 commit comments

Comments
 (0)