mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-02 04:34:13 +03:00
Added NonNull, List definitions to ClassTypes
This commit is contained in:
parent
3363f588fe
commit
afc5e2720b
|
@ -43,10 +43,19 @@ class ClassTypeMeta(type):
|
|||
# Add all attributes to the class.
|
||||
for obj_name, obj in attrs.items():
|
||||
cls.add_to_class(obj_name, obj)
|
||||
|
||||
if not cls._meta.abstract:
|
||||
from ..types import List, NonNull
|
||||
setattr(cls, 'NonNull', NonNull(cls))
|
||||
setattr(cls, 'List', List(cls))
|
||||
|
||||
return cls
|
||||
|
||||
|
||||
class ClassType(six.with_metaclass(ClassTypeMeta)):
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
@classmethod
|
||||
def internal_type(cls, schema):
|
||||
raise NotImplementedError("Function internal_type not implemented in type {}".format(cls))
|
||||
|
@ -74,6 +83,9 @@ class FieldsClassTypeMeta(ClassTypeMeta):
|
|||
|
||||
|
||||
class FieldsClassType(six.with_metaclass(FieldsClassTypeMeta, ClassType)):
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
@classmethod
|
||||
def fields_internal_types(cls, schema):
|
||||
fields = []
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from ..base import ClassType, FieldsClassType
|
||||
from ...types import Field, String
|
||||
from ...types import Field, String, List, NonNull
|
||||
from ...schema import Schema
|
||||
|
||||
|
||||
|
@ -20,6 +20,20 @@ def test_classtype_advanced():
|
|||
assert Character._meta.description == 'OtherCharacter description'
|
||||
|
||||
|
||||
def test_classtype_definition_list():
|
||||
class Character(ClassType):
|
||||
'''Character description'''
|
||||
pass
|
||||
assert isinstance(Character.List, List)
|
||||
|
||||
|
||||
def test_classtype_definition_nonnull():
|
||||
class Character(ClassType):
|
||||
'''Character description'''
|
||||
pass
|
||||
assert isinstance(Character.NonNull, NonNull)
|
||||
|
||||
|
||||
def test_fieldsclasstype():
|
||||
f = Field(String())
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user