mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-23 15:10:48 +03:00
Allow setting of private metadata.
This commit is contained in:
parent
3c99302ed6
commit
f728de311e
|
@ -8,8 +8,9 @@ from .dynamic import Dynamic
|
|||
|
||||
class Argument(OrderedType):
|
||||
|
||||
def __init__(self, type, default_value=None, description=None, name=None, required=False, _creation_counter=None):
|
||||
super(Argument, self).__init__(_creation_counter=_creation_counter)
|
||||
def __init__(self, type, default_value=None, description=None, name=None, required=False,
|
||||
_creation_counter=None, _metadata=None):
|
||||
super(Argument, self).__init__(_creation_counter=_creation_counter, _metadata=_metadata)
|
||||
|
||||
if required:
|
||||
type = NonNull(type)
|
||||
|
|
|
@ -23,8 +23,8 @@ class Field(OrderedType):
|
|||
def __init__(self, type, args=None, resolver=None, source=None,
|
||||
deprecation_reason=None, name=None, description=None,
|
||||
required=False, _creation_counter=None, default_value=None,
|
||||
**extra_args):
|
||||
super(Field, self).__init__(_creation_counter=_creation_counter)
|
||||
_metadata=None, **extra_args):
|
||||
super(Field, self).__init__(_creation_counter=_creation_counter, _metadata=_metadata)
|
||||
assert not args or isinstance(args, Mapping), (
|
||||
'Arguments in a field have to be a mapping, received "{}".'
|
||||
).format(args)
|
||||
|
|
|
@ -6,8 +6,8 @@ class InputField(OrderedType):
|
|||
|
||||
def __init__(self, type, name=None, default_value=None,
|
||||
deprecation_reason=None, description=None,
|
||||
required=False, _creation_counter=None, **extra_args):
|
||||
super(InputField, self).__init__(_creation_counter=_creation_counter)
|
||||
required=False, _creation_counter=None, _metadata=None, **extra_args):
|
||||
super(InputField, self).__init__(_creation_counter=_creation_counter, _metadata=_metadata)
|
||||
self.name = name
|
||||
if required:
|
||||
type = NonNull(type)
|
||||
|
|
44
graphene/types/tests/test_unmounted_type.py
Normal file
44
graphene/types/tests/test_unmounted_type.py
Normal file
|
@ -0,0 +1,44 @@
|
|||
from ..unmountedtype import UnmountedType
|
||||
|
||||
|
||||
class MyUnmountedType(UnmountedType):
|
||||
@classmethod
|
||||
def get_type(cls):
|
||||
'''
|
||||
This function is called when the unmounted type (Scalar instance)
|
||||
is mounted (as a Field, InputField or Argument)
|
||||
'''
|
||||
return cls
|
||||
|
||||
|
||||
def test_unmountedtype_allows_setting_of_metadata():
|
||||
one = UnmountedType(_metadata='Test')
|
||||
|
||||
assert one.metadata == 'Test'
|
||||
|
||||
|
||||
def test_unmountedtype_metadata_defaults_to_none():
|
||||
one = UnmountedType()
|
||||
|
||||
assert one.metadata is None
|
||||
|
||||
|
||||
def test_unmountedtype_passes_on_metadata_to_field():
|
||||
one = MyUnmountedType(_metadata='Other Test')
|
||||
one_field = one.Field()
|
||||
|
||||
assert one_field.metadata == 'Other Test'
|
||||
|
||||
|
||||
def test_unmountedtype_passes_on_metadata_to_input_field():
|
||||
one = MyUnmountedType(_metadata='Other Test')
|
||||
one_input_field = one.InputField()
|
||||
|
||||
assert one_input_field.metadata == 'Other Test'
|
||||
|
||||
|
||||
def test_unmountedtype_passes_on_metadata_to_argument():
|
||||
one = MyUnmountedType(_metadata='Other Test')
|
||||
one_argument = one.Argument()
|
||||
|
||||
assert one_argument.metadata == 'Other Test'
|
|
@ -15,10 +15,11 @@ class UnmountedType(OrderedType):
|
|||
>>> my_field = String(description='Description here')
|
||||
'''
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
def __init__(self, _metadata=None, *args, **kwargs):
|
||||
super(UnmountedType, self).__init__()
|
||||
self.args = args
|
||||
self.kwargs = kwargs
|
||||
self.metadata = _metadata
|
||||
|
||||
def get_type(self):
|
||||
'''
|
||||
|
@ -36,6 +37,7 @@ class UnmountedType(OrderedType):
|
|||
self.get_type(),
|
||||
*self.args,
|
||||
_creation_counter=self.creation_counter,
|
||||
_metadata=self.metadata,
|
||||
**self.kwargs
|
||||
)
|
||||
|
||||
|
@ -48,6 +50,7 @@ class UnmountedType(OrderedType):
|
|||
self.get_type(),
|
||||
*self.args,
|
||||
_creation_counter=self.creation_counter,
|
||||
_metadata=self.metadata,
|
||||
**self.kwargs
|
||||
)
|
||||
|
||||
|
@ -60,6 +63,7 @@ class UnmountedType(OrderedType):
|
|||
self.get_type(),
|
||||
*self.args,
|
||||
_creation_counter=self.creation_counter,
|
||||
_metadata=self.metadata,
|
||||
**self.kwargs
|
||||
)
|
||||
|
||||
|
|
|
@ -5,8 +5,9 @@ from functools import total_ordering
|
|||
class OrderedType(object):
|
||||
creation_counter = 1
|
||||
|
||||
def __init__(self, _creation_counter=None):
|
||||
def __init__(self, _creation_counter=None, _metadata=None):
|
||||
self.creation_counter = _creation_counter or self.gen_counter()
|
||||
self.metadata = _metadata
|
||||
|
||||
@staticmethod
|
||||
def gen_counter():
|
||||
|
|
|
@ -39,3 +39,15 @@ def test_orderedtype_non_orderabletypes():
|
|||
assert one.__lt__(1) == NotImplemented
|
||||
assert one.__gt__(1) == NotImplemented
|
||||
assert not one == 1
|
||||
|
||||
|
||||
def test_orderedtype_has_metadata():
|
||||
one = OrderedType(_metadata='Test')
|
||||
|
||||
assert one.metadata == 'Test'
|
||||
|
||||
|
||||
def test_orderedtype_metadata_defaults_to_none():
|
||||
one = OrderedType()
|
||||
|
||||
assert one.metadata == None
|
||||
|
|
Loading…
Reference in New Issue
Block a user