test: Add tests for validate_argument_types decorator

This commit is contained in:
Gavin D'souza 2023-06-07 17:17:13 +05:30
parent 1a7b7a589b
commit 5c2fe7c292
No known key found for this signature in database
GPG key ID: 3A7BF4D4340DE6F7

View file

@ -1155,3 +1155,35 @@ class TestRounding(FrappeTestCase):
def test_default_rounding(self):
self.assertEqual(frappe.get_system_settings("rounding_method"), "Banker's Rounding")
class TestTypingValidations(FrappeTestCase):
def test_validate_argument_types(self):
from frappe.utils.typing_validations import FrappeTypeError, validate_argument_types
@validate_argument_types
def test_simple_types(a: int, b: float, c: bool):
return a, b, c
@validate_argument_types
def test_sequence(a: str, b: list[dict] | None = None, c: dict[str, int] | None = None):
return a, b, c
self.assertEqual(test_simple_types(True, 2.0, True), (1, 2.0, True))
self.assertEqual(test_simple_types(1, 2, 1), (1, 2.0, True))
self.assertEqual(test_simple_types(1.0, 2, 1), (1, 2.0, True))
self.assertEqual(test_simple_types(1, 2, "1"), (1, 2.0, True))
with self.assertRaises(FrappeTypeError):
test_simple_types(1, 2, "a")
with self.assertRaises(FrappeTypeError):
test_simple_types(1, 2, None)
self.assertEqual(test_sequence("a", [{"a": 1}], {"a": 1}), ("a", [{"a": 1}], {"a": 1}))
self.assertEqual(test_sequence("a", None, None), ("a", None, None))
self.assertEqual(test_sequence("a", [{"a": 1}], None), ("a", [{"a": 1}], None))
self.assertEqual(test_sequence("a", None, {"a": 1}), ("a", None, {"a": 1}))
self.assertEqual(test_sequence("a", [{"a": 1}], {"a": "1.0"}), ("a", [{"a": 1}], {"a": 1}))
with self.assertRaises(FrappeTypeError):
test_sequence("a", [{"a": 1}], True)