From 0e2d9be6a8f1e8e841a3724b6503d25d8ab2efb1 Mon Sep 17 00:00:00 2001 From: Syrus Akbary Date: Mon, 20 Feb 2017 21:41:11 -0800 Subject: [PATCH] Fixed test schema with empty query. Fixed #409 --- graphene/tests/issues/test_313.py | 5 ++++- graphene/types/schema.py | 10 +++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/graphene/tests/issues/test_313.py b/graphene/tests/issues/test_313.py index bed87290..1a67a8ec 100644 --- a/graphene/tests/issues/test_313.py +++ b/graphene/tests/issues/test_313.py @@ -3,6 +3,9 @@ import graphene from graphene import resolve_only_args +class Query(graphene.ObjectType): + rand = graphene.String() + class Success(graphene.ObjectType): yeah = graphene.String() @@ -45,7 +48,7 @@ def test_create_post(): } ''' - schema = graphene.Schema(mutation=Mutations) + schema = graphene.Schema(query=Query, mutation=Mutations) result = schema.execute(query_string) assert not result.errors diff --git a/graphene/types/schema.py b/graphene/types/schema.py index e9600dc9..8066de3e 100644 --- a/graphene/types/schema.py +++ b/graphene/types/schema.py @@ -1,3 +1,4 @@ +import inspect from graphql import GraphQLSchema, graphql, is_type from graphql.type.directives import (GraphQLDirective, GraphQLIncludeDirective, @@ -7,6 +8,7 @@ from graphql.utils.introspection_query import introspection_query from graphql.utils.schema_printer import print_schema from .definitions import GrapheneGraphQLType +from .objecttype import ObjectType from .typemap import TypeMap, is_graphene_type @@ -20,6 +22,9 @@ class Schema(GraphQLSchema): def __init__(self, query=None, mutation=None, subscription=None, directives=None, types=None, auto_camelcase=True): + assert inspect.isclass(query) and issubclass(query, ObjectType), ( + 'Schema query must be Object Type but got: {}.' + ).format(query) self._query = query self._mutation = mutation self._subscription = subscription @@ -77,7 +82,10 @@ class Schema(GraphQLSchema): return graphql(self, *args, **kwargs) def introspect(self): - return self.execute(introspection_query).data + instrospection = self.execute(introspection_query) + if instrospection.errors: + raise instrospection.errors[0] + return instrospection.data def __str__(self): return print_schema(self)