From 33d77854ce24557363b0546976c7f86f21c56090 Mon Sep 17 00:00:00 2001 From: Jason Kraus Date: Sat, 2 Jan 2021 14:04:24 -0800 Subject: [PATCH] fix(Decimal): parse integers and floats as decimal. Also enable py38 in tox --- graphene/types/decimal.py | 4 ++-- graphene/types/tests/test_decimal.py | 8 ++++++++ tox.ini | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/graphene/types/decimal.py b/graphene/types/decimal.py index 028d6d28..f42ac554 100644 --- a/graphene/types/decimal.py +++ b/graphene/types/decimal.py @@ -2,7 +2,7 @@ from __future__ import absolute_import from decimal import Decimal as _Decimal -from graphql.language.ast import StringValueNode +from graphql.language.ast import StringValueNode, IntValueNode, FloatValueNode from .scalars import Scalar @@ -23,7 +23,7 @@ class Decimal(Scalar): @classmethod def parse_literal(cls, node): - if isinstance(node, StringValueNode): + if isinstance(node, (StringValueNode, IntValueNode, FloatValueNode)): return cls.parse_value(node.value) @staticmethod diff --git a/graphene/types/tests/test_decimal.py b/graphene/types/tests/test_decimal.py index fd77f482..9757e82c 100644 --- a/graphene/types/tests/test_decimal.py +++ b/graphene/types/tests/test_decimal.py @@ -41,3 +41,11 @@ def test_bad_decimal_query(): result = schema.execute("""{ decimal(input: "%s") }""" % not_a_decimal) assert len(result.errors) == 1 assert result.data is None + + +def test_decimal_string_query_integer(): + decimal_value = 1 + result = schema.execute("""{ decimal(input: %s) }""" % decimal_value) + assert not result.errors + assert result.data == {"decimal": str(decimal_value)} + assert decimal.Decimal(result.data["decimal"]) == decimal_value diff --git a/tox.ini b/tox.ini index b0298fea..dd922c46 100644 --- a/tox.ini +++ b/tox.ini @@ -8,7 +8,7 @@ deps = setenv = PYTHONPATH = .:{envdir} commands = - py{36,37}: pytest --cov=graphene graphene examples {posargs} + py{36,37,38}: pytest --cov=graphene graphene examples {posargs} [testenv:pre-commit] basepython=python3.7