Skip to content

Commit 1feb4b2

Browse files
committed
Support recursive input object types in build_ast_schema
1 parent 01cba7c commit 1feb4b2

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

graphql/utils/build_ast_schema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ def make_scalar_def(definition):
234234
def make_input_object_def(definition):
235235
return GraphQLInputObjectType(
236236
name=definition.name.value,
237-
fields=make_input_values(definition.fields, GraphQLInputObjectField)
237+
fields=lambda: make_input_values(definition.fields, GraphQLInputObjectField)
238238
)
239239

240240
_schema_def_handlers = {

graphql/utils/tests/test_build_ast_schema.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -411,6 +411,25 @@ def test_input_types_are_read():
411411
assert input_type.fields["id"].type == GraphQLInt
412412

413413

414+
def test_input_types_can_be_recursive():
415+
schema = build_ast_schema(parse("""
416+
schema {
417+
query: Query
418+
}
419+
420+
type Query {
421+
field(input: Input): Int
422+
}
423+
424+
input Input {
425+
id: Input
426+
}
427+
"""))
428+
429+
input_type = schema.get_type("Input")
430+
assert input_type.fields["id"].type == input_type
431+
432+
414433
def test_simple_argument_field_with_default():
415434
body = '''
416435
schema {

0 commit comments

Comments
 (0)