From a2872f2a920ae3b5c67f4901e3ac28fdeb954d34 Mon Sep 17 00:00:00 2001 From: Minh Tu Le Date: Sat, 17 Apr 2021 15:30:08 -0700 Subject: [PATCH 1/3] Use argument's default value regardless if the input field is required --- graphene/types/schema.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/graphene/types/schema.py b/graphene/types/schema.py index 4fd71769c..6a1af6879 100644 --- a/graphene/types/schema.py +++ b/graphene/types/schema.py @@ -313,9 +313,7 @@ def create_fields_for_type(self, graphene_type, is_input_type=False): arg_type, out_name=arg_name, description=arg.description, - default_value=Undefined - if isinstance(arg.type, NonNull) - else arg.default_value, + default_value=arg.default_value, ) subscribe = field.wrap_subscribe( self.get_function_for_type( From 79653b353014751c1292acf4898d50adcb468814 Mon Sep 17 00:00:00 2001 From: Minh Tu Le Date: Sat, 17 Apr 2021 16:20:23 -0700 Subject: [PATCH 2/3] Add a test --- graphene/types/schema.py | 1 - graphene/types/tests/test_type_map.py | 18 ++++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/graphene/types/schema.py b/graphene/types/schema.py index 6a1af6879..995323542 100644 --- a/graphene/types/schema.py +++ b/graphene/types/schema.py @@ -26,7 +26,6 @@ GraphQLObjectType, GraphQLSchema, GraphQLString, - Undefined, ) from graphql.execution import ExecutionContext from graphql.execution.values import get_argument_values diff --git a/graphene/types/tests/test_type_map.py b/graphene/types/tests/test_type_map.py index 334eb2415..795729160 100644 --- a/graphene/types/tests/test_type_map.py +++ b/graphene/types/tests/test_type_map.py @@ -6,6 +6,7 @@ GraphQLInputField, GraphQLInputObjectType, GraphQLInterfaceType, + GraphQLNonNull, GraphQLObjectType, GraphQLString, ) @@ -94,6 +95,23 @@ def resolve_foo(self, bar): } +def test_required_argument_with_default_value(): + class MyObjectType(ObjectType): + foo = String( + bar=String(required=True, default_value="x") + ) + + type_map = create_type_map([MyObjectType]) + + graphql_type = type_map["MyObjectType"] + foo_field = graphql_type.fields["foo"] + + bar_argument = foo_field.args["bar"] + assert bar_argument.default_value == "x" + assert isinstance(bar_argument.type, GraphQLNonNull) + assert bar_argument.type.of_type == GraphQLString + + def test_dynamic_objecttype(): class MyObjectType(ObjectType): """Description""" From 0f5ce220444e5ffbbcf7303f1c34735f313556a3 Mon Sep 17 00:00:00 2001 From: Minh Tu Le Date: Sat, 17 Apr 2021 16:25:53 -0700 Subject: [PATCH 3/3] Format code --- graphene/types/tests/test_type_map.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/graphene/types/tests/test_type_map.py b/graphene/types/tests/test_type_map.py index 795729160..12e7a1f44 100644 --- a/graphene/types/tests/test_type_map.py +++ b/graphene/types/tests/test_type_map.py @@ -97,9 +97,7 @@ def resolve_foo(self, bar): def test_required_argument_with_default_value(): class MyObjectType(ObjectType): - foo = String( - bar=String(required=True, default_value="x") - ) + foo = String(bar=String(required=True, default_value="x")) type_map = create_type_map([MyObjectType])