From 388253ede47c2b998c0fb20030f86d908fb383ce Mon Sep 17 00:00:00 2001 From: Daniel Johnston Date: Fri, 5 May 2017 14:27:46 -0700 Subject: [PATCH] Added type consistency. --- graphene/types/argument.py | 7 ++++++- graphene/types/tests/test_argument.py | 13 +++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/graphene/types/argument.py b/graphene/types/argument.py index c884b017..cb28ee5e 100644 --- a/graphene/types/argument.py +++ b/graphene/types/argument.py @@ -4,6 +4,7 @@ from itertools import chain from .mountedtype import MountedType from .structures import NonNull from .dynamic import Dynamic +from .utils import get_type class Argument(MountedType): @@ -15,10 +16,14 @@ class Argument(MountedType): type = NonNull(type) self.name = name - self.type = type + self._type = type self.default_value = default_value self.description = description + @property + def type(self): + return get_type(self._type) + def __eq__(self, other): return isinstance(other, Argument) and ( self.name == other.name, diff --git a/graphene/types/tests/test_argument.py b/graphene/types/tests/test_argument.py index 558afd44..256df86b 100644 --- a/graphene/types/tests/test_argument.py +++ b/graphene/types/tests/test_argument.py @@ -1,4 +1,5 @@ import pytest +from functools import partial from ..argument import Argument, to_arguments from ..field import Field @@ -61,3 +62,15 @@ def test_to_arguments_raises_if_inputfield(): to_arguments(args) assert str(exc_info.value) == 'Expected arg_string to be Argument, but received InputField. Try using Argument(String).' + + +def test_argument_with_lazy_type(): + MyType = object() + arg = Field(lambda: MyType) + assert arg.type == MyType + + +def test_argument_with_lazy_partial_type(): + MyType = object() + arg = Field(partial(lambda: MyType)) + assert arg.type == MyType \ No newline at end of file