|
15 | 15 | GraphQLObjectType, |
16 | 16 | GraphQLScalarType, |
17 | 17 | GraphQLSchema, |
| 18 | + GraphQLString, |
18 | 19 | ) |
19 | 20 | from graphql.utilities import build_schema, value_from_ast_untyped |
20 | 21 |
|
@@ -221,6 +222,67 @@ def test_serialize_variables_single_value_for_list_type(): |
221 | 222 | assert req.variable_values == {"ids": ["abc"], "ns": [5]} |
222 | 223 |
|
223 | 224 |
|
| 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 | + |
224 | 286 | def test_graphql_request_using_string_instead_of_document(): |
225 | 287 | request = GraphQLRequest("{balance}") |
226 | 288 |
|
|
0 commit comments