graphene/tests/core/test_query.py

75 lines
1.4 KiB
Python
Raw Normal View History

from py.test import raises
from collections import namedtuple
from pytest import raises
from graphql.core import graphql
from graphene.core.fields import (
Field,
StringField,
ListField,
)
from graphql.core.type import (
GraphQLObjectType,
GraphQLSchema,
GraphQLInterfaceType
)
from graphene.core.types import (
Interface,
ObjectType
)
2015-10-16 08:18:08 +03:00
from graphene.core.schema import Schema
class Character(Interface):
name = StringField()
class Pet(ObjectType):
2015-10-03 08:17:51 +03:00
type = StringField(resolve=lambda *_: 'Dog')
class Human(Character):
friends = ListField(Character)
pet = Field(Pet)
def resolve_name(self, *args):
return 'Peter'
2015-10-03 08:17:51 +03:00
def resolve_friend(self, *args):
return Human(object())
def resolve_pet(self, *args):
return Pet(object())
# def resolve_friends(self, *args, **kwargs):
# return 'HEY YOU!'
2015-10-16 08:18:08 +03:00
schema = Schema()
Human_type = Human.internal_type(schema)
2015-10-16 08:18:08 +03:00
2015-10-14 05:10:31 +03:00
def test_type():
assert Human._meta.fields_map['name'].resolve(Human(object()), 1, 2) == 'Peter'
2015-10-16 08:18:08 +03:00
def test_query():
schema = GraphQLSchema(query=Human_type)
query = '''
{
name
pet {
type
}
}
'''
expected = {
'name': 'Peter',
'pet': {
2015-10-03 08:17:51 +03:00
'type': 'Dog'
}
}
result = graphql(schema, query, root=Human(object()))
assert not result.errors
assert result.data == expected