Skip to content

Commit 91e9d4b

Browse files
committed
Add tests for list variable coercion behaviors
1 parent 7260efb commit 91e9d4b

1 file changed

Lines changed: 62 additions & 0 deletions

File tree

tests/test_graphql_request.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
GraphQLObjectType,
1616
GraphQLScalarType,
1717
GraphQLSchema,
18+
GraphQLString,
1819
)
1920
from graphql.utilities import build_schema, value_from_ast_untyped
2021

@@ -221,6 +222,67 @@ def test_serialize_variables_single_value_for_list_type():
221222
assert req.variable_values == {"ids": ["abc"], "ns": [5]}
222223

223224

225+
def test_serialize_variables_mapping_as_singleton_input_object():
226+
schema = build_schema(
227+
"input ItemInput { name: String } type Query { f(items: [ItemInput]): String }"
228+
)
229+
req = GraphQLRequest(
230+
"query q($items: [ItemInput]) { f(items: $items) }",
231+
variable_values={"items": {"name": "abc"}},
232+
)
233+
req = req.serialize_variable_values(schema)
234+
assert req.variable_values == {"items": [{"name": "abc"}]}
235+
236+
237+
def test_serialize_variables_recursive_list_coercion():
238+
schema = build_schema("type Query { f(values: [[Int]]): String }")
239+
240+
req1 = GraphQLRequest(
241+
"query q($values: [[Int]]) { f(values: $values) }",
242+
variable_values={"values": 1},
243+
)
244+
req1 = req1.serialize_variable_values(schema)
245+
assert req1.variable_values == {"values": [[1]]}
246+
247+
req2 = GraphQLRequest(
248+
"query q($values: [[Int]]) { f(values: $values) }",
249+
variable_values={"values": [1, 2]},
250+
)
251+
req2 = req2.serialize_variable_values(schema)
252+
assert req2.variable_values == {"values": [[1], [2]]}
253+
254+
255+
def test_serialize_variables_collection_behavior():
256+
schema = build_schema("type Query { f(values: [Int]): String }")
257+
req = GraphQLRequest(
258+
"query q($values: [Int]) { f(values: $values) }",
259+
variable_values={"values": (1, 2)},
260+
)
261+
req = req.serialize_variable_values(schema)
262+
assert req.variable_values == {"values": [1, 2]}
263+
264+
265+
def test_serialize_variables_bytes_behavior():
266+
bytes_scalar = GraphQLScalarType(name="Bytes", serialize=lambda v: v)
267+
schema = GraphQLSchema(
268+
query=GraphQLObjectType(
269+
"Query",
270+
fields={
271+
"f": GraphQLField(
272+
GraphQLString,
273+
args={"values": GraphQLArgument(GraphQLList(bytes_scalar))},
274+
)
275+
},
276+
)
277+
)
278+
req = GraphQLRequest(
279+
"query q($values: [Bytes]) { f(values: $values) }",
280+
variable_values={"values": b"abc"},
281+
)
282+
req = req.serialize_variable_values(schema)
283+
assert req.variable_values == {"values": [b"abc"]}
284+
285+
224286
def test_graphql_request_using_string_instead_of_document():
225287
request = GraphQLRequest("{balance}")
226288

0 commit comments

Comments
 (0)