mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-11-04 18:07:48 +03:00 
			
		
		
		
	Some testing around.
This commit is contained in:
		
							parent
							
								
									ef8d7e2bd2
								
							
						
					
					
						commit
						a78c487173
					
				| 
						 | 
					@ -1,23 +1,20 @@
 | 
				
			||||||
 | 
					from collections import OrderedDict
 | 
				
			||||||
import pytest
 | 
					import pytest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from graphql_relay import to_global_id
 | 
					from graphql_relay import to_global_id
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from ...types import ObjectType, Schema, String
 | 
					from ...types import ObjectType, Schema, String, AbstractType
 | 
				
			||||||
from ..connection import Connection
 | 
					from ..connection import Connection
 | 
				
			||||||
from ..node import Node
 | 
					from ..node import Node
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SharedNodeFields(ObjectType):
 | 
					class SharedNodeFields(AbstractType):
 | 
				
			||||||
 | 
					 | 
				
			||||||
    class Meta:
 | 
					 | 
				
			||||||
        interfaces = (Node, )
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    shared = String()
 | 
					    shared = String()
 | 
				
			||||||
    something_else = String()
 | 
					    something_else = String()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    @classmethod
 | 
					    def resolve_something_else(*_):
 | 
				
			||||||
    def get_node(cls, id, *_):
 | 
					        return '----'
 | 
				
			||||||
        return cls(shared=str(id))
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MyNode(ObjectType):
 | 
					class MyNode(ObjectType):
 | 
				
			||||||
| 
						 | 
					@ -31,12 +28,19 @@ class MyNode(ObjectType):
 | 
				
			||||||
        return MyNode(name=str(id))
 | 
					        return MyNode(name=str(id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class MyOtherNode(SharedNodeFields):
 | 
					class MyOtherNode(SharedNodeFields, ObjectType):
 | 
				
			||||||
    extra_field = String()
 | 
					    extra_field = String()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        interfaces = (Node, )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def resolve_extra_field(self, *_):
 | 
					    def resolve_extra_field(self, *_):
 | 
				
			||||||
        return 'extra field info.'
 | 
					        return 'extra field info.'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @staticmethod
 | 
				
			||||||
 | 
					    def get_node(id, *_):
 | 
				
			||||||
 | 
					        return MyOtherNode(shared=str(id))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class RootQuery(ObjectType):
 | 
					class RootQuery(ObjectType):
 | 
				
			||||||
    first = String()
 | 
					    first = String()
 | 
				
			||||||
| 
						 | 
					@ -88,10 +92,10 @@ def test_node_query():
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_subclassed_node_query():
 | 
					def test_subclassed_node_query():
 | 
				
			||||||
    executed = schema.execute(
 | 
					    executed = schema.execute(
 | 
				
			||||||
        '{ node(id:"%s") { ... on MyOtherNode { shared, extraField } } }' % to_global_id("MyOtherNode", 1)
 | 
					        '{ node(id:"%s") { ... on MyOtherNode { shared, extraField, somethingElse } } }' % to_global_id("MyOtherNode", 1)
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    assert not executed.errors
 | 
					    assert not executed.errors
 | 
				
			||||||
    assert executed.data == {'node': {'shared': '1', 'extraField': 'extra field info'}}
 | 
					    assert executed.data == OrderedDict({'node': OrderedDict([('shared', '1'), ('extraField', 'extra field info.'), ('somethingElse', '----')])})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def test_node_query_incorrect_id():
 | 
					def test_node_query_incorrect_id():
 | 
				
			||||||
| 
						 | 
					@ -114,6 +118,7 @@ type MyNode implements Node {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
type MyOtherNode implements Node {
 | 
					type MyOtherNode implements Node {
 | 
				
			||||||
 | 
					  id: ID!
 | 
				
			||||||
  shared: String
 | 
					  shared: String
 | 
				
			||||||
  somethingElse: String
 | 
					  somethingElse: String
 | 
				
			||||||
  extraField: String
 | 
					  extraField: String
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,6 +81,9 @@ def test_generate_objecttype_inherit_abstracttype():
 | 
				
			||||||
    class MyObjectType(ObjectType, MyAbstractType):
 | 
					    class MyObjectType(ObjectType, MyAbstractType):
 | 
				
			||||||
        field2 = MyScalar()
 | 
					        field2 = MyScalar()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert MyObjectType._meta.description is None
 | 
				
			||||||
 | 
					    assert MyObjectType._meta.interfaces == ()
 | 
				
			||||||
 | 
					    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]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,6 +95,9 @@ def test_generate_objecttype_inherit_abstracttype_reversed():
 | 
				
			||||||
    class MyObjectType(MyAbstractType, ObjectType):
 | 
					    class MyObjectType(MyAbstractType, ObjectType):
 | 
				
			||||||
        field2 = MyScalar()
 | 
					        field2 = MyScalar()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    assert MyObjectType._meta.description is None
 | 
				
			||||||
 | 
					    assert MyObjectType._meta.interfaces == ()
 | 
				
			||||||
 | 
					    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]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user