From e58b08e7a60acc17c8a7da0d2c5061bbbc266151 Mon Sep 17 00:00:00 2001 From: xzhang2 Date: Sat, 25 Jul 2020 14:05:01 -0700 Subject: [PATCH 1/3] Raises `KeyError` when argument is invalid. --- gql/dsl.py | 2 ++ tests/starwars/test_dsl.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/gql/dsl.py b/gql/dsl.py index 80361240..e5f0b759 100644 --- a/gql/dsl.py +++ b/gql/dsl.py @@ -103,6 +103,8 @@ def args(self, **kwargs): added_args = [] for name, value in kwargs.items(): arg = self.field.args.get(name) + if not arg: + raise KeyError(f"Argument {name} does not exist in {self.field}.") arg_type_serializer = get_arg_serializer(arg.type) serialized_value = arg_type_serializer(value) added_args.append( diff --git a/tests/starwars/test_dsl.py b/tests/starwars/test_dsl.py index 9047f352..f8661894 100644 --- a/tests/starwars/test_dsl.py +++ b/tests/starwars/test_dsl.py @@ -144,3 +144,8 @@ def test_create_review_mutation_result(ds): ) expected = {"createReview": {"stars": 5, "commentary": "This is a great movie!"}} assert result == expected + + +def test_invalid_arg(ds): + with pytest.raises(KeyError, match="Argument invalid_arg does not exist in Field: Character."): + ds.query(ds.Query.hero.args(invalid_arg=5).select(ds.Character.name)) From 47e7eda271ba945049f23cb16df0074e30756946 Mon Sep 17 00:00:00 2001 From: Manuel Bojato <30560560+KingDarBoja@users.noreply.github.com> Date: Thu, 30 Jul 2020 19:41:51 -0500 Subject: [PATCH 2/3] styles: apply black formatting --- gql/dsl.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gql/dsl.py b/gql/dsl.py index e5f0b759..0f66ff5e 100644 --- a/gql/dsl.py +++ b/gql/dsl.py @@ -104,7 +104,7 @@ def args(self, **kwargs): for name, value in kwargs.items(): arg = self.field.args.get(name) if not arg: - raise KeyError(f"Argument {name} does not exist in {self.field}.") + raise KeyError(f"Argument {name} does not exist in {self.field}.") arg_type_serializer = get_arg_serializer(arg.type) serialized_value = arg_type_serializer(value) added_args.append( From eb27150b5b4219658ef6637cc564f46425c0700e Mon Sep 17 00:00:00 2001 From: Manuel Bojato <30560560+KingDarBoja@users.noreply.github.com> Date: Thu, 30 Jul 2020 19:42:36 -0500 Subject: [PATCH 3/3] styles: apply black formatting --- tests/starwars/test_dsl.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/starwars/test_dsl.py b/tests/starwars/test_dsl.py index f8661894..12a2f76b 100644 --- a/tests/starwars/test_dsl.py +++ b/tests/starwars/test_dsl.py @@ -147,5 +147,7 @@ def test_create_review_mutation_result(ds): def test_invalid_arg(ds): - with pytest.raises(KeyError, match="Argument invalid_arg does not exist in Field: Character."): + with pytest.raises( + KeyError, match="Argument invalid_arg does not exist in Field: Character." + ): ds.query(ds.Query.hero.args(invalid_arg=5).select(ds.Character.name))