mirror of
https://github.com/graphql-python/graphene-django.git
synced 2024-11-22 09:37:07 +03:00
Do not access the internals of SimpleLazyObject
(#945)
This commit is contained in:
parent
ed4937f9df
commit
2225ed62e1
|
@ -60,6 +60,31 @@ def test_should_query_simplelazy_objects():
|
|||
assert result.data == {"reporter": {"id": "1"}}
|
||||
|
||||
|
||||
def test_should_query_wrapped_simplelazy_objects():
|
||||
class ReporterType(DjangoObjectType):
|
||||
class Meta:
|
||||
model = Reporter
|
||||
fields = ("id",)
|
||||
|
||||
class Query(graphene.ObjectType):
|
||||
reporter = graphene.Field(ReporterType)
|
||||
|
||||
def resolve_reporter(self, info):
|
||||
return SimpleLazyObject(lambda: SimpleLazyObject(lambda: Reporter(id=1)))
|
||||
|
||||
schema = graphene.Schema(query=Query)
|
||||
query = """
|
||||
query {
|
||||
reporter {
|
||||
id
|
||||
}
|
||||
}
|
||||
"""
|
||||
result = schema.execute(query)
|
||||
assert not result.errors
|
||||
assert result.data == {"reporter": {"id": "1"}}
|
||||
|
||||
|
||||
def test_should_query_well():
|
||||
class ReporterType(DjangoObjectType):
|
||||
class Meta:
|
||||
|
|
|
@ -272,12 +272,9 @@ class DjangoObjectType(ObjectType):
|
|||
|
||||
@classmethod
|
||||
def is_type_of(cls, root, info):
|
||||
if isinstance(root, SimpleLazyObject):
|
||||
root._setup()
|
||||
root = root._wrapped
|
||||
if isinstance(root, cls):
|
||||
return True
|
||||
if not is_valid_django_model(type(root)):
|
||||
if not is_valid_django_model(root.__class__):
|
||||
raise Exception(('Received incompatible instance "{}".').format(root))
|
||||
|
||||
if cls._meta.model._meta.proxy:
|
||||
|
|
Loading…
Reference in New Issue
Block a user