Skip to content

Commit ba18b5e

Browse files
JBrVJxscxzhang2KingDarBoja
authored
Raises "KeyError" when argument is invalid on DSL. (#121)
* Raises `KeyError` when argument is invalid. * styles: apply black formatting * styles: apply black formatting Co-authored-by: xzhang2 <[email protected]> Co-authored-by: Manuel Bojato <[email protected]>
1 parent fa90459 commit ba18b5e

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

gql/dsl.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ def args(self, **kwargs):
103103
added_args = []
104104
for name, value in kwargs.items():
105105
arg = self.field.args.get(name)
106+
if not arg:
107+
raise KeyError(f"Argument {name} does not exist in {self.field}.")
106108
arg_type_serializer = get_arg_serializer(arg.type)
107109
serialized_value = arg_type_serializer(value)
108110
added_args.append(

tests/starwars/test_dsl.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,10 @@ def test_create_review_mutation_result(ds):
144144
)
145145
expected = {"createReview": {"stars": 5, "commentary": "This is a great movie!"}}
146146
assert result == expected
147+
148+
149+
def test_invalid_arg(ds):
150+
with pytest.raises(
151+
KeyError, match="Argument invalid_arg does not exist in Field: Character."
152+
):
153+
ds.query(ds.Query.hero.args(invalid_arg=5).select(ds.Character.name))

0 commit comments

Comments
 (0)