Make Graphene compatible with Core 3.2

This commit is contained in:
Christoph Zwerschke 2022-05-07 00:48:04 +02:00
parent e37ef00ca4
commit 9e7e08d48a
No known key found for this signature in database
GPG Key ID: 04E06042706EE52E
11 changed files with 53 additions and 62 deletions

View File

@ -115,5 +115,4 @@ input IntroduceShipInput {
shipName: String!
factionId: String!
clientMutationId: String
}
'''
}'''

View File

@ -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):

View File

@ -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()
)

View File

@ -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()
)

View File

@ -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)}

View File

@ -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"))

View File

@ -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)

View File

@ -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:

View File

@ -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"}}

View File

@ -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()
)

View File

@ -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,