fix( DjangoListField ): test that default functionality should resolve/call queryset at view time, first attempt at solution

This commit is contained in:
Jason Kraus 2020-11-13 15:19:23 -08:00
parent eb7a0265d8
commit d38abafd9c
2 changed files with 35 additions and 2 deletions

View File

@ -44,7 +44,7 @@ class DjangoListField(Field):
return self._underlying_type._meta.model
def get_default_queryset(self):
return self.model._default_manager.get_queryset()
return self.model._default_manager # .get_queryset()
@staticmethod
def list_resolver(
@ -52,7 +52,7 @@ class DjangoListField(Field):
):
queryset = maybe_queryset(resolver(root, info, **args))
if queryset is None:
queryset = default_queryset
queryset = maybe_queryset(default_queryset)
if isinstance(queryset, QuerySet):
# Pass queryset to the DjangoObjectType get_queryset method

View File

@ -75,6 +75,39 @@ class TestDjangoListField:
"reporters": [{"firstName": "Tara"}, {"firstName": "Debra"}]
}
def test_list_field_queryset_is_not_cached(self):
class Reporter(DjangoObjectType):
class Meta:
model = ReporterModel
fields = ("first_name",)
class Query(ObjectType):
reporters = DjangoListField(Reporter)
schema = Schema(query=Query)
query = """
query {
reporters {
firstName
}
}
"""
result = schema.execute(query)
assert not result.errors
assert result.data == {"reporters": []}
ReporterModel.objects.create(first_name="Tara", last_name="West")
ReporterModel.objects.create(first_name="Debra", last_name="Payne")
result = schema.execute(query)
assert not result.errors
assert result.data == {
"reporters": [{"firstName": "Tara"}, {"firstName": "Debra"}]
}
def test_override_resolver(self):
class Reporter(DjangoObjectType):
class Meta: