diff --git a/graphene/types/decimal.py b/graphene/types/decimal.py index b2acbe7e..056d199a 100644 --- a/graphene/types/decimal.py +++ b/graphene/types/decimal.py @@ -28,6 +28,8 @@ class Decimal(Scalar): @staticmethod def parse_value(value): + if value == "": + return None try: return _Decimal(value) except ValueError: diff --git a/graphene/types/tests/test_decimal.py b/graphene/types/tests/test_decimal.py index 9757e82c..24aec24a 100644 --- a/graphene/types/tests/test_decimal.py +++ b/graphene/types/tests/test_decimal.py @@ -6,7 +6,7 @@ from ..schema import Schema class Query(ObjectType): - decimal = Decimal(input=Decimal()) + decimal = Decimal(input=Decimal(required=False)) def resolve_decimal(self, info, input): return input @@ -49,3 +49,10 @@ def test_decimal_string_query_integer(): assert not result.errors assert result.data == {"decimal": str(decimal_value)} assert decimal.Decimal(result.data["decimal"]) == decimal_value + +def test_parse_decimal_empty_string(): + """Parsing an empty string should return None""" + result = schema.execute("""{ decimal(input: \"\") }""") + assert not result.errors + assert result.data == {"decimal": None} +