@@ -431,3 +431,66 @@ def test_simple_query_with_datetime(swapi_dataclass_renderer, swapi_parser, modu
431431 assert data .returnOfTheJedi .title == 'Return of the Jedi'
432432 assert data .returnOfTheJedi .director == 'George Lucas'
433433 assert data .returnOfTheJedi .releaseDate == now
434+
435+
436+ def test_non_nullable_list (module_compiler , mocker ):
437+ from gql .query_parser import QueryParser
438+ from graphql import (
439+ GraphQLSchema , GraphQLObjectType , GraphQLField , GraphQLString , GraphQLList , GraphQLNonNull )
440+
441+ PersonType = GraphQLObjectType ('Person' , lambda : {
442+ 'name' : GraphQLField (GraphQLString ),
443+ })
444+
445+ schema = GraphQLSchema (
446+ query = GraphQLObjectType (
447+ name = 'RootQueryType' ,
448+ fields = {
449+ 'people' : GraphQLField (
450+ GraphQLList (GraphQLNonNull (PersonType )),
451+ resolve = lambda obj , info : {'name' :'eran' }
452+ )
453+ }))
454+
455+ query = """
456+ query GetPeople {
457+ people {
458+ name
459+ }
460+ }
461+ """
462+
463+ parser = QueryParser (schema )
464+ dataclass_renderer = DataclassesRenderer (schema , Config (schema = 'schemaurl' , endpoint = 'schemaurl' , documents = '' ))
465+
466+ parsed = parser .parse (query )
467+ rendered = dataclass_renderer .render (parsed )
468+
469+ m = module_compiler (rendered )
470+
471+ now = datetime .now ()
472+
473+ call_mock = mocker .patch .object (m .Client , 'call' )
474+ call_mock .return_value = """
475+ {
476+ "data": {
477+ "people": [
478+ {
479+ "name": "eran"
480+ },
481+ {
482+ "name": "eran1"
483+ }
484+ ]
485+ }
486+ }
487+ """
488+
489+ result = m .GetPeople .execute ()
490+ assert result
491+ assert isinstance (result , m .GetPeople )
492+
493+ data = result .data
494+ assert len (data .people ) == 2
495+ assert data .people [0 ].name == 'eran'
496+ assert data .people [1 ].name == 'eran1'
0 commit comments