diff --git a/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py b/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py index d7694e90..b02a420c 100644 --- a/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py +++ b/examples/starwars_relay/tests/snapshots/snap_test_objectidentification.py @@ -115,5 +115,4 @@ input IntroduceShipInput { shipName: String! factionId: String! clientMutationId: String -} -''' +}''' diff --git a/examples/starwars_relay/tests/test_objectidentification.py b/examples/starwars_relay/tests/test_objectidentification.py index f280df04..c024f432 100644 --- a/examples/starwars_relay/tests/test_objectidentification.py +++ b/examples/starwars_relay/tests/test_objectidentification.py @@ -9,7 +9,7 @@ client = Client(schema) def test_str_schema(snapshot): - snapshot.assert_match(str(schema)) + snapshot.assert_match(str(schema).strip()) def test_correctly_fetches_id_name_rebels(snapshot): diff --git a/graphene/relay/tests/test_node.py b/graphene/relay/tests/test_node.py index d46838ac..6b310fde 100644 --- a/graphene/relay/tests/test_node.py +++ b/graphene/relay/tests/test_node.py @@ -1,7 +1,7 @@ import re -from graphql_relay import to_global_id +from textwrap import dedent -from graphene.tests.utils import dedent +from graphql_relay import to_global_id from ...types import ObjectType, Schema, String from ..node import Node, is_node @@ -171,8 +171,10 @@ def test_node_field_only_lazy_type_wrong(): def test_str_schema(): - assert str(schema) == dedent( - ''' + assert ( + str(schema).strip() + == dedent( + ''' schema { query: RootQuery } @@ -213,4 +215,5 @@ def test_str_schema(): ): MyNode } ''' + ).strip() ) diff --git a/graphene/relay/tests/test_node_custom.py b/graphene/relay/tests/test_node_custom.py index 76a2cad3..762e3424 100644 --- a/graphene/relay/tests/test_node_custom.py +++ b/graphene/relay/tests/test_node_custom.py @@ -1,6 +1,6 @@ -from graphql import graphql_sync +from textwrap import dedent -from graphene.tests.utils import dedent +from graphql import graphql_sync from ...types import Interface, ObjectType, Schema from ...types.scalars import Int, String @@ -54,8 +54,10 @@ graphql_schema = schema.graphql_schema def test_str_schema_correct(): - assert str(schema) == dedent( - ''' + assert ( + str(schema).strip() + == dedent( + ''' schema { query: RootQuery } @@ -93,6 +95,7 @@ def test_str_schema_correct(): ): Node } ''' + ).strip() ) diff --git a/graphene/test/__init__.py b/graphene/test/__init__.py index 8591dc06..13b05dd3 100644 --- a/graphene/test/__init__.py +++ b/graphene/test/__init__.py @@ -1,5 +1,4 @@ from promise import Promise, is_thenable -from graphql.error import format_error as format_graphql_error from graphql.error import GraphQLError from graphene.types.schema import Schema @@ -7,7 +6,7 @@ from graphene.types.schema import Schema def default_format_error(error): if isinstance(error, GraphQLError): - return format_graphql_error(error) + return error.formatted return {"message": str(error)} diff --git a/graphene/tests/utils.py b/graphene/tests/utils.py deleted file mode 100644 index b9804d9b..00000000 --- a/graphene/tests/utils.py +++ /dev/null @@ -1,9 +0,0 @@ -from textwrap import dedent as _dedent - - -def dedent(text: str) -> str: - """Fix indentation of given text by removing leading spaces and tabs. - Also removes leading newlines and trailing spaces and tabs, but keeps trailing - newlines. - """ - return _dedent(text.lstrip("\n").rstrip(" \t")) diff --git a/graphene/types/definitions.py b/graphene/types/definitions.py index 908cc7c8..e5505fd3 100644 --- a/graphene/types/definitions.py +++ b/graphene/types/definitions.py @@ -7,7 +7,6 @@ from graphql import ( GraphQLObjectType, GraphQLScalarType, GraphQLUnionType, - Undefined, ) @@ -50,7 +49,7 @@ class GrapheneEnumType(GrapheneGraphQLType, GraphQLEnumType): try: value = enum[value] except KeyError: - return Undefined + pass return super(GrapheneEnumType, self).serialize(value) diff --git a/graphene/types/schema.py b/graphene/types/schema.py index 0c6d4183..bf76b36d 100644 --- a/graphene/types/schema.py +++ b/graphene/types/schema.py @@ -376,19 +376,11 @@ class TypeMap(dict): def resolve_type(self, resolve_type_func, type_name, root, info, _type): type_ = resolve_type_func(root, info) - if not type_: - return_type = self[type_name] - return default_type_resolver(root, info, return_type) - if inspect.isclass(type_) and issubclass(type_, ObjectType): - graphql_type = self.get(type_._meta.name) - assert graphql_type, f"Can't find type {type_._meta.name} in schema" - assert ( - graphql_type.graphene_type == type_ - ), f"The type {type_} does not match with the associated graphene type {graphql_type.graphene_type}." - return graphql_type + return type_._meta.name - return type_ + return_type = self[type_name] + return default_type_resolver(root, info, return_type) class Schema: diff --git a/graphene/types/tests/test_enum.py b/graphene/types/tests/test_enum.py index 6e204aa9..471727c0 100644 --- a/graphene/types/tests/test_enum.py +++ b/graphene/types/tests/test_enum.py @@ -251,19 +251,22 @@ def test_enum_types(): schema = Schema(query=Query) - assert str(schema) == dedent( - '''\ - type Query { - color: Color! - } + assert ( + str(schema).strip() + == dedent( + ''' + type Query { + color: Color! + } - """Primary colors""" - enum Color { - RED - YELLOW - BLUE - } - ''' + """Primary colors""" + enum Color { + RED + YELLOW + BLUE + } + ''' + ).strip() ) @@ -345,10 +348,7 @@ def test_enum_resolver_invalid(): results = schema.execute("query { color }") assert results.errors - assert ( - results.errors[0].message - == "Expected a value of type 'Color' but received: 'BLACK'" - ) + assert results.errors[0].message == "Enum 'Color' cannot represent value: 'BLACK'" def test_field_enum_argument(): @@ -460,12 +460,13 @@ def test_mutation_enum_input_type(): schema = Schema(query=Query, mutation=MyMutation) result = schema.execute( - """ mutation MyMutation { - createPaint(colorInput: { color: RED }) { - color + """ + mutation MyMutation { + createPaint(colorInput: { color: RED }) { + color + } } - } - """ + """ ) assert not result.errors assert result.data == {"createPaint": {"color": "RED"}} diff --git a/graphene/types/tests/test_schema.py b/graphene/types/tests/test_schema.py index fe4739c9..c03c81ba 100644 --- a/graphene/types/tests/test_schema.py +++ b/graphene/types/tests/test_schema.py @@ -1,7 +1,8 @@ -from graphql.type import GraphQLObjectType, GraphQLSchema +from textwrap import dedent + from pytest import raises -from graphene.tests.utils import dedent +from graphql.type import GraphQLObjectType, GraphQLSchema from ..field import Field from ..objecttype import ObjectType @@ -43,8 +44,10 @@ def test_schema_get_type_error(): def test_schema_str(): schema = Schema(Query) - assert str(schema) == dedent( - """ + assert ( + str(schema).strip() + == dedent( + """ type Query { inner: MyOtherType } @@ -53,6 +56,7 @@ def test_schema_str(): field: String } """ + ).strip() ) diff --git a/setup.py b/setup.py index b06702be..dce6aa6c 100644 --- a/setup.py +++ b/setup.py @@ -84,8 +84,8 @@ setup( keywords="api graphql protocol rest relay graphene", packages=find_packages(exclude=["examples*"]), install_requires=[ - "graphql-core~=3.1.2", - "graphql-relay>=3.0,<4", + "graphql-core>=3.1,<3.3", + "graphql-relay>=3.1,<3.3", "aniso8601>=8,<10", ], tests_require=tests_require,