Skip to content

Commit cb3bfe0

Browse files
authored
Use default_resolver to resolve values when using the source at… (#1155)
1 parent 6f2863e commit cb3bfe0

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

graphene/types/field.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from .argument import Argument, to_arguments
66
from .mountedtype import MountedType
7+
from .resolver import default_resolver
78
from .structures import NonNull
89
from .unmountedtype import UnmountedType
910
from .utils import get_type
@@ -12,7 +13,7 @@
1213

1314

1415
def source_resolver(source, root, info, **args):
15-
resolved = getattr(root, source, None)
16+
resolved = default_resolver(source, None, root, info, **args)
1617
if inspect.isfunction(resolved) or inspect.ismethod(resolved):
1718
return resolved()
1819
return resolved

graphene/types/tests/test_field.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ def test_field_source():
6666
assert field.resolver(MyInstance(), None) == MyInstance.value
6767

6868

69+
def test_field_source_dict_or_attr():
70+
MyType = object()
71+
field = Field(MyType, source="value")
72+
assert field.resolver(MyInstance(), None) == MyInstance.value
73+
assert field.resolver({"value": MyInstance.value}, None) == MyInstance.value
74+
75+
6976
def test_field_with_lazy_type():
7077
MyType = object()
7178
field = Field(lambda: MyType)

0 commit comments

Comments
 (0)