Skip to content

Commit

Permalink
Merge pull request #13277 from netbox-community/13272-fix-graphql-test
Browse files Browse the repository at this point in the history
13272 fix graphql test
  • Loading branch information
jeremystretch authored Jul 27, 2023
2 parents 0f9fe96 + 83c092f commit 0c2e3ff
Showing 1 changed file with 9 additions and 2 deletions.
11 changes: 9 additions & 2 deletions netbox/utilities/testing/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.contrib.contenttypes.models import ContentType
from django.urls import reverse
from django.test import override_settings
from graphene.types import Dynamic as GQLDynamic, List as GQLList, Union as GQLUnion
from graphene.types import Dynamic as GQLDynamic, List as GQLList, Union as GQLUnion, String as GQLString, NonNull as GQLNonNull
from rest_framework import status
from rest_framework.test import APIClient

Expand Down Expand Up @@ -452,6 +452,13 @@ def _build_query(self, name, **filters):
# Compile list of fields to include
fields_string = ''
for field_name, field in type_class._meta.fields.items():
is_string_array = False
if type(field.type) is GQLList:
if field.type.of_type is GQLString:
is_string_array = True
elif type(field.type.of_type) is GQLNonNull and field.type.of_type.of_type is GQLString:
is_string_array = True

if type(field) is GQLDynamic:
# Dynamic fields must specify a subselection
fields_string += f'{field_name} {{ id }}\n'
Expand All @@ -461,7 +468,7 @@ def _build_query(self, name, **filters):
elif type(field.type) is GQLList and inspect.isclass(field.type.of_type) and issubclass(field.type.of_type, GQLUnion):
# Union types dont' have an id or consistent values
continue
elif type(field.type) is GQLList and field_name != 'choices':
elif type(field.type) is GQLList and not is_string_array:
# TODO: Come up with something more elegant
# Temporary hack to support automated testing of reverse generic relations
fields_string += f'{field_name} {{ id }}\n'
Expand Down

0 comments on commit 0c2e3ff

Please sign in to comment.