Skip to content

Commit b759723

Browse files
committed
wip: add failing tests
1 parent 3cf0d26 commit b759723

File tree

1 file changed

+52
-46
lines changed

1 file changed

+52
-46
lines changed

tests/execution/test_middleware.py

Lines changed: 52 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,21 @@
55
from graphql.language.parser import parse
66
from graphql.type import GraphQLField, GraphQLObjectType, GraphQLSchema, GraphQLString
77

8-
9-
def describe_middleware():
10-
def describe_with_manager():
11-
def default():
8+
def _create_schema(tp: GraphQLObjectType, is_subscription: bool) -> GraphQLSchema:
9+
if is_subscription:
10+
noop_type = GraphQLObjectType("Noop", {"noop": GraphQLField(GraphQLString, resolve=lambda *_: "noop")})
11+
return GraphQLSchema(query=noop_type, subscription=tp)
12+
return GraphQLSchema(tp)
13+
@pytest.mark.parametrize("is_subscription", [False, True], ids=["query", "subscription"])
14+
def test_describe_middleware(is_subscription: bool):
15+
16+
def test_test_describe_with_manager():
17+
def test_default():
1218
doc = parse("{ field }")
1319

1420
# noinspection PyMethodMayBeStatic
1521
class Data:
16-
def field(self, _info):
22+
def test_field(self, _info):
1723
return "resolved"
1824

1925
test_type = GraphQLObjectType(
@@ -22,20 +28,20 @@ def field(self, _info):
2228

2329
middlewares = MiddlewareManager()
2430
result = execute(
25-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
31+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
2632
)
2733

2834
assert result.data["field"] == "resolved" # type: ignore
2935

30-
def single_function():
36+
def test_single_function():
3137
doc = parse("{ first second }")
3238

3339
# noinspection PyMethodMayBeStatic
3440
class Data:
35-
def first(self, _info):
41+
def test_first(self, _info):
3642
return "one"
3743

38-
def second(self, _info):
44+
def test_second(self, _info):
3945
return "two"
4046

4147
test_type = GraphQLObjectType(
@@ -51,12 +57,12 @@ def reverse_middleware(next_, *args, **kwargs):
5157

5258
middlewares = MiddlewareManager(reverse_middleware)
5359
result = execute(
54-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
60+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
5561
)
5662

5763
assert result.data == {"first": "eno", "second": "owt"} # type: ignore
5864

59-
def two_functions_and_field_resolvers():
65+
def test_two_functions_and_field_resolvers():
6066
doc = parse("{ first second }")
6167

6268
# noinspection PyMethodMayBeStatic
@@ -84,21 +90,21 @@ def capitalize_middleware(next_, *args, **kwargs):
8490

8591
middlewares = MiddlewareManager(reverse_middleware, capitalize_middleware)
8692
result = execute(
87-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
93+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
8894
)
8995

9096
assert result.data == {"first": "Eno", "second": "Owt"} # type: ignore
9197

9298
@pytest.mark.asyncio()
93-
async def single_async_function():
99+
async def test_single_async_function():
94100
doc = parse("{ first second }")
95101

96102
# noinspection PyMethodMayBeStatic
97103
class Data:
98-
async def first(self, _info):
104+
async def test_first(self, _info):
99105
return "one"
100106

101-
async def second(self, _info):
107+
async def test_second(self, _info):
102108
return "two"
103109

104110
test_type = GraphQLObjectType(
@@ -114,21 +120,21 @@ async def reverse_middleware(next_, *args, **kwargs):
114120

115121
middlewares = MiddlewareManager(reverse_middleware)
116122
awaitable_result = execute(
117-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
123+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
118124
)
119125
assert isinstance(awaitable_result, Awaitable)
120126
result = await awaitable_result
121127
assert result.data == {"first": "eno", "second": "owt"}
122128

123-
def single_object():
129+
def test_single_object():
124130
doc = parse("{ first second }")
125131

126132
# noinspection PyMethodMayBeStatic
127133
class Data:
128-
def first(self, _info):
134+
def test_first(self, _info):
129135
return "one"
130136

131-
def second(self, _info):
137+
def test_second(self, _info):
132138
return "two"
133139

134140
test_type = GraphQLObjectType(
@@ -141,17 +147,17 @@ def second(self, _info):
141147

142148
class ReverseMiddleware:
143149
# noinspection PyMethodMayBeStatic
144-
def resolve(self, next_, *args, **kwargs):
150+
def test_resolve(self, next_, *args, **kwargs):
145151
return next_(*args, **kwargs)[::-1]
146152

147153
middlewares = MiddlewareManager(ReverseMiddleware())
148154
result = execute(
149-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
155+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
150156
)
151157

152158
assert result.data == {"first": "eno", "second": "owt"} # type: ignore
153159

154-
def skip_middleware_without_resolve_method():
160+
def test_skip_middleware_without_resolve_method():
155161
class BadMiddleware:
156162
pass # no resolve method here
157163

@@ -167,12 +173,12 @@ class BadMiddleware:
167173
middleware=MiddlewareManager(BadMiddleware()),
168174
) == ({"foo": "bar"}, None)
169175

170-
def with_function_and_object():
176+
def test_with_function_and_object():
171177
doc = parse("{ field }")
172178

173179
# noinspection PyMethodMayBeStatic
174180
class Data:
175-
def field(self, _info):
181+
def test_field(self, _info):
176182
return "resolved"
177183

178184
test_type = GraphQLObjectType(
@@ -184,28 +190,28 @@ def reverse_middleware(next_, *args, **kwargs):
184190

185191
class CaptitalizeMiddleware:
186192
# noinspection PyMethodMayBeStatic
187-
def resolve(self, next_, *args, **kwargs):
193+
def test_resolve(self, next_, *args, **kwargs):
188194
return next_(*args, **kwargs).capitalize()
189195

190196
middlewares = MiddlewareManager(reverse_middleware, CaptitalizeMiddleware())
191197
result = execute(
192-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
198+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
193199
)
194200
assert result.data == {"field": "Devloser"} # type: ignore
195201

196202
middlewares = MiddlewareManager(CaptitalizeMiddleware(), reverse_middleware)
197203
result = execute(
198-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
204+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
199205
)
200206
assert result.data == {"field": "devloseR"} # type: ignore
201207

202208
@pytest.mark.asyncio()
203-
async def with_async_function_and_object():
209+
async def test_with_async_function_and_object():
204210
doc = parse("{ field }")
205211

206212
# noinspection PyMethodMayBeStatic
207213
class Data:
208-
async def field(self, _info):
214+
async def test_field(self, _info):
209215
return "resolved"
210216

211217
test_type = GraphQLObjectType(
@@ -217,59 +223,59 @@ async def reverse_middleware(next_, *args, **kwargs):
217223

218224
class CaptitalizeMiddleware:
219225
# noinspection PyMethodMayBeStatic
220-
async def resolve(self, next_, *args, **kwargs):
226+
async def test_resolve(self, next_, *args, **kwargs):
221227
return (await next_(*args, **kwargs)).capitalize()
222228

223229
middlewares = MiddlewareManager(reverse_middleware, CaptitalizeMiddleware())
224230
awaitable_result = execute(
225-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
231+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
226232
)
227233
assert isinstance(awaitable_result, Awaitable)
228234
result = await awaitable_result
229235
assert result.data == {"field": "Devloser"}
230236

231237
middlewares = MiddlewareManager(CaptitalizeMiddleware(), reverse_middleware)
232238
awaitable_result = execute(
233-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
239+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
234240
)
235241
assert isinstance(awaitable_result, Awaitable)
236242
result = await awaitable_result
237243
assert result.data == {"field": "devloseR"}
238244

239-
def describe_without_manager():
240-
def no_middleware():
245+
def test_describe_without_manager():
246+
def test_no_middleware():
241247
doc = parse("{ field }")
242248

243249
# noinspection PyMethodMayBeStatic
244250
class Data:
245-
def field(self, _info):
251+
def test_field(self, _info):
246252
return "resolved"
247253

248254
test_type = GraphQLObjectType(
249255
"TestType", {"field": GraphQLField(GraphQLString)}
250256
)
251257

252-
result = execute(GraphQLSchema(test_type), doc, Data(), middleware=None)
258+
result = execute(_create_schema(test_type, is_subscription), doc, Data(), middleware=None)
253259

254260
assert result.data["field"] == "resolved" # type: ignore
255261

256-
def empty_middleware_list():
262+
def test_empty_middleware_list():
257263
doc = parse("{ field }")
258264

259265
# noinspection PyMethodMayBeStatic
260266
class Data:
261-
def field(self, _info):
267+
def test_field(self, _info):
262268
return "resolved"
263269

264270
test_type = GraphQLObjectType(
265271
"TestType", {"field": GraphQLField(GraphQLString)}
266272
)
267273

268-
result = execute(GraphQLSchema(test_type), doc, Data(), middleware=[])
274+
result = execute(_create_schema(test_type, is_subscription), doc, Data(), middleware=[])
269275

270276
assert result.data["field"] == "resolved" # type: ignore
271277

272-
def bad_middleware_object():
278+
def test_bad_middleware_object():
273279
doc = parse("{ field }")
274280

275281
test_type = GraphQLObjectType(
@@ -279,7 +285,7 @@ def bad_middleware_object():
279285
with pytest.raises(TypeError) as exc_info:
280286
# noinspection PyTypeChecker
281287
execute(
282-
GraphQLSchema(test_type),
288+
_create_schema(test_type, is_subscription),
283289
doc,
284290
None,
285291
middleware=cast(Middleware, {"bad": "value"}),
@@ -291,12 +297,12 @@ def bad_middleware_object():
291297
" Got {'bad': 'value'} instead."
292298
)
293299

294-
def list_of_functions():
300+
def test_list_of_functions():
295301
doc = parse("{ field }")
296302

297303
# noinspection PyMethodMayBeStatic
298304
class Data:
299-
def field(self, _info):
305+
def test_field(self, _info):
300306
return "resolved"
301307

302308
test_type = GraphQLObjectType(
@@ -306,11 +312,11 @@ def field(self, _info):
306312
log = []
307313

308314
class LogMiddleware:
309-
def __init__(self, name):
315+
def test___init__(self, name):
310316
self.name = name
311317

312318
# noinspection PyMethodMayBeStatic
313-
def resolve(self, next_, *args, **kwargs):
319+
def test_resolve(self, next_, *args, **kwargs):
314320
log.append(f"enter {self.name}")
315321
value = next_(*args, **kwargs)
316322
log.append(f"exit {self.name}")
@@ -319,7 +325,7 @@ def resolve(self, next_, *args, **kwargs):
319325
middlewares = [LogMiddleware("A"), LogMiddleware("B"), LogMiddleware("C")]
320326

321327
result = execute(
322-
GraphQLSchema(test_type), doc, Data(), middleware=middlewares
328+
_create_schema(test_type, is_subscription), doc, Data(), middleware=middlewares
323329
)
324330
assert result.data == {"field": "resolved"} # type: ignore
325331

0 commit comments

Comments
 (0)