mirror of
https://github.com/graphql-python/graphene.git
synced 2025-02-02 20:54:16 +03:00
Fixed str on abstract types. Improved repr
This commit is contained in:
parent
415b71f730
commit
562cafc14f
|
@ -21,7 +21,7 @@ class BaseOptions(object):
|
||||||
raise Exception("Can't modify frozen Options {0}".format(self))
|
raise Exception("Can't modify frozen Options {0}".format(self))
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<{} type={}>".format(self.__class__.__name__, self.class_type.__name__)
|
return "<{} name={}>".format(self.__class__.__name__, repr(self.name))
|
||||||
|
|
||||||
|
|
||||||
class BaseType(SubclassWithMeta):
|
class BaseType(SubclassWithMeta):
|
||||||
|
|
|
@ -44,6 +44,8 @@ def test_generate_objecttype():
|
||||||
assert MyObjectType._meta.description == "Documentation"
|
assert MyObjectType._meta.description == "Documentation"
|
||||||
assert MyObjectType._meta.interfaces == tuple()
|
assert MyObjectType._meta.interfaces == tuple()
|
||||||
assert MyObjectType._meta.fields == {}
|
assert MyObjectType._meta.fields == {}
|
||||||
|
assert repr(
|
||||||
|
MyObjectType) == "<MyObjectType meta=<ObjectTypeOptions name='MyObjectType'>>"
|
||||||
|
|
||||||
|
|
||||||
def test_generate_objecttype_with_meta():
|
def test_generate_objecttype_with_meta():
|
||||||
|
@ -66,7 +68,6 @@ def test_generate_lazy_objecttype():
|
||||||
class InnerObjectType(ObjectType):
|
class InnerObjectType(ObjectType):
|
||||||
field = Field(MyType)
|
field = Field(MyType)
|
||||||
|
|
||||||
|
|
||||||
assert MyObjectType._meta.name == "MyObjectType"
|
assert MyObjectType._meta.name == "MyObjectType"
|
||||||
example_field = MyObjectType._meta.fields['example']
|
example_field = MyObjectType._meta.fields['example']
|
||||||
assert isinstance(example_field.type, NonNull)
|
assert isinstance(example_field.type, NonNull)
|
||||||
|
@ -115,7 +116,8 @@ def test_generate_objecttype_inherit_abstracttype():
|
||||||
assert MyObjectType._meta.interfaces == ()
|
assert MyObjectType._meta.interfaces == ()
|
||||||
assert MyObjectType._meta.name == "MyObjectType"
|
assert MyObjectType._meta.name == "MyObjectType"
|
||||||
assert list(MyObjectType._meta.fields.keys()) == ['field1', 'field2']
|
assert list(MyObjectType._meta.fields.keys()) == ['field1', 'field2']
|
||||||
assert list(map(type, MyObjectType._meta.fields.values())) == [Field, Field]
|
assert list(map(type, MyObjectType._meta.fields.values())) == [
|
||||||
|
Field, Field]
|
||||||
|
|
||||||
|
|
||||||
def test_generate_objecttype_inherit_abstracttype_reversed():
|
def test_generate_objecttype_inherit_abstracttype_reversed():
|
||||||
|
@ -129,7 +131,8 @@ def test_generate_objecttype_inherit_abstracttype_reversed():
|
||||||
assert MyObjectType._meta.interfaces == ()
|
assert MyObjectType._meta.interfaces == ()
|
||||||
assert MyObjectType._meta.name == "MyObjectType"
|
assert MyObjectType._meta.name == "MyObjectType"
|
||||||
assert list(MyObjectType._meta.fields.keys()) == ['field1', 'field2']
|
assert list(MyObjectType._meta.fields.keys()) == ['field1', 'field2']
|
||||||
assert list(map(type, MyObjectType._meta.fields.values())) == [Field, Field]
|
assert list(map(type, MyObjectType._meta.fields.values())) == [
|
||||||
|
Field, Field]
|
||||||
|
|
||||||
|
|
||||||
def test_generate_objecttype_unmountedtype():
|
def test_generate_objecttype_unmountedtype():
|
||||||
|
@ -145,7 +148,8 @@ def test_parent_container_get_fields():
|
||||||
|
|
||||||
|
|
||||||
def test_parent_container_interface_get_fields():
|
def test_parent_container_interface_get_fields():
|
||||||
assert list(ContainerWithInterface._meta.fields.keys()) == ['ifield', 'field1', 'field2']
|
assert list(ContainerWithInterface._meta.fields.keys()) == [
|
||||||
|
'ifield', 'field1', 'field2']
|
||||||
|
|
||||||
|
|
||||||
def test_objecttype_as_container_only_args():
|
def test_objecttype_as_container_only_args():
|
||||||
|
@ -182,7 +186,8 @@ def test_objecttype_as_container_invalid_kwargs():
|
||||||
with pytest.raises(TypeError) as excinfo:
|
with pytest.raises(TypeError) as excinfo:
|
||||||
Container(unexisting_field="3")
|
Container(unexisting_field="3")
|
||||||
|
|
||||||
assert "'unexisting_field' is an invalid keyword argument for Container" == str(excinfo.value)
|
assert "'unexisting_field' is an invalid keyword argument for Container" == str(
|
||||||
|
excinfo.value)
|
||||||
|
|
||||||
|
|
||||||
def test_objecttype_container_benchmark(benchmark):
|
def test_objecttype_container_benchmark(benchmark):
|
||||||
|
@ -238,7 +243,6 @@ def test_objecttype_no_fields_output():
|
||||||
def resolve_user(self, info):
|
def resolve_user(self, info):
|
||||||
return User()
|
return User()
|
||||||
|
|
||||||
|
|
||||||
schema = Schema(query=Query)
|
schema = Schema(query=Query)
|
||||||
result = schema.execute(''' query basequery {
|
result = schema.execute(''' query basequery {
|
||||||
user {
|
user {
|
||||||
|
@ -252,3 +256,12 @@ def test_objecttype_no_fields_output():
|
||||||
'name': None,
|
'name': None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def test_abstract_objecttype_can_str():
|
||||||
|
class MyObjectType(ObjectType):
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
field = MyScalar()
|
||||||
|
|
||||||
|
assert str(MyObjectType) == "MyObjectType"
|
||||||
|
|
|
@ -6,9 +6,15 @@ from .props import props
|
||||||
|
|
||||||
|
|
||||||
class SubclassWithMeta_Meta(InitSubclassMeta):
|
class SubclassWithMeta_Meta(InitSubclassMeta):
|
||||||
|
_meta = None
|
||||||
|
|
||||||
|
def __str__(cls):
|
||||||
|
if cls._meta:
|
||||||
|
return cls._meta.name
|
||||||
|
return cls.__name__
|
||||||
|
|
||||||
def __repr__(cls):
|
def __repr__(cls):
|
||||||
return cls._meta.name
|
return "<{} meta={}>".format(cls.__name__, repr(cls._meta))
|
||||||
|
|
||||||
|
|
||||||
class SubclassWithMeta(six.with_metaclass(SubclassWithMeta_Meta)):
|
class SubclassWithMeta(six.with_metaclass(SubclassWithMeta_Meta)):
|
||||||
|
@ -24,7 +30,8 @@ class SubclassWithMeta(six.with_metaclass(SubclassWithMeta_Meta)):
|
||||||
elif isclass(_Meta):
|
elif isclass(_Meta):
|
||||||
_meta_props = props(_Meta)
|
_meta_props = props(_Meta)
|
||||||
else:
|
else:
|
||||||
raise Exception("Meta have to be either a class or a dict. Received {}".format(_Meta))
|
raise Exception(
|
||||||
|
"Meta have to be either a class or a dict. Received {}".format(_Meta))
|
||||||
delattr(cls, "Meta")
|
delattr(cls, "Meta")
|
||||||
options = dict(meta_options, **_meta_props)
|
options = dict(meta_options, **_meta_props)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user