Added breaking test to demonstrate wanted subclassing feature.

This commit is contained in:
Markus Padourek 2016-08-16 11:21:31 +01:00
parent 018811036b
commit 0ef065e5cc

View File

@ -7,6 +7,19 @@ from ..connection import Connection
from ..node import Node
class SharedNodeFields(ObjectType):
class Meta:
interfaces = (Node, )
shared = String()
something_else = String()
@classmethod
def get_node(cls, id, *_):
return cls(shared=str(id))
class MyNode(ObjectType):
class Meta:
@ -18,11 +31,18 @@ class MyNode(ObjectType):
return MyNode(name=str(id))
class MyOtherNode(SharedNodeFields):
extra_field = String()
def resolve_extra_field(self, *_):
return 'extra field info.'
class RootQuery(ObjectType):
first = String()
node = Node.Field()
schema = Schema(query=RootQuery, types=[MyNode])
schema = Schema(query=RootQuery, types=[MyNode, MyOtherNode])
def test_node_no_get_node():
@ -66,6 +86,14 @@ def test_node_query():
assert executed.data == {'node': {'name': '1'}}
def test_subclassed_node_query():
executed = schema.execute(
'{ node(id:"%s") { ... on MyOtherNode { shared, extraField } } }' % to_global_id("MyOtherNode", 1)
)
assert not executed.errors
assert executed.data == {'node': {'shared': '1', 'extraField': 'extra field info'}}
def test_node_query_incorrect_id():
executed = schema.execute(
'{ node(id:"%s") { ... on MyNode { name } } }' % "something:2"
@ -85,6 +113,12 @@ type MyNode implements Node {
name: String
}
type MyOtherNode implements Node {
shared: String
somethingElse: String
extraField: String
}
interface Node {
id: ID!
}