diff --git a/graphql_query/base_model.py b/graphql_query/base_model.py index dab1202..d7d2615 100644 --- a/graphql_query/base_model.py +++ b/graphql_query/base_model.py @@ -21,7 +21,7 @@ def _get_field_template(field_info: PydanticFieldInfo) -> Field: return Field(name="", fields=[], alias=alias, arguments=arguments, directives=directives, typename=typename) -def _get_fields(model: Type['GraphQLQueryBaseModel']) -> List[Union[str, Field, InlineFragment, Fragment]]: +def _get_fields(model: Type["GraphQLQueryBaseModel"]) -> List[Union[str, Field, InlineFragment, Fragment]]: fields: List[Union[str, Field, InlineFragment, Fragment]] = [] for f_name, f in model.model_fields.items(): @@ -50,7 +50,7 @@ def _get_fields(model: Type['GraphQLQueryBaseModel']) -> List[Union[str, Field, InlineFragment(type=union_arg.__name__, fields=_get_fields(union_arg)) for union_arg in union_args ] - else: + elif issubclass(list_args, GraphQLQueryBaseModel): _field_template.fields = _get_fields(list_args) # diff --git a/tests/tests_base_model/test_list_of_primitives.py b/tests/tests_base_model/test_list_of_primitives.py new file mode 100644 index 0000000..d69fd90 --- /dev/null +++ b/tests/tests_base_model/test_list_of_primitives.py @@ -0,0 +1,24 @@ +from typing import List + +from graphql_query import Field, GraphQLQueryBaseModel + + +def test_simple_model(): + class Hero(GraphQLQueryBaseModel): + name: str + friends: List[str] + + correct = [ + Field(name="name", fields=[]), + Field(name="friends", fields=[]), + ] + generated = Hero.graphql_fields() + + assert generated == correct + assert ( + Field(name="hero", fields=generated).render() + == """hero { + name + friends +}""" + )