diff options
| author | Jake Howard <git@theorangeone.net> | 2025-07-17 12:51:09 +0100 |
|---|---|---|
| committer | nessita <124304+nessita@users.noreply.github.com> | 2025-09-16 17:28:32 -0300 |
| commit | 4289966d1b8e848e5e460b7c782dac009d746b20 (patch) | |
| tree | ef1d61a33562579d985c762036db5f7aa01406fc /tests/utils_tests/test_json.py | |
| parent | 218f69f05eb51da1ea17d62a914a67ceff5bfd55 (diff) | |
Fixed #35859 -- Added background Tasks framework interface.
This work implements what was defined in DEP 14
(https://github.com/django/deps/blob/main/accepted/0014-background-workers.rst).
Thanks to Raphael Gaschignard, Eric Holscher, Ran Benita, Sarah Boyce,
Jacob Walls, and Natalia Bidart for the reviews.
Diffstat (limited to 'tests/utils_tests/test_json.py')
| -rw-r--r-- | tests/utils_tests/test_json.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/utils_tests/test_json.py b/tests/utils_tests/test_json.py new file mode 100644 index 0000000000..9d137149ed --- /dev/null +++ b/tests/utils_tests/test_json.py @@ -0,0 +1,46 @@ +import json +from collections import UserList, defaultdict +from datetime import datetime +from decimal import Decimal + +from django.test import SimpleTestCase +from django.utils.json import normalize_json + + +class JSONNormalizeTestCase(SimpleTestCase): + def test_converts_json_types(self): + for test_case, expected in [ + (None, "null"), + (True, "true"), + (False, "false"), + (2, "2"), + (3.0, "3.0"), + (1e23 + 1, "1e+23"), + ("1", '"1"'), + (b"hello", '"hello"'), + ([], "[]"), + (UserList([1, 2]), "[1, 2]"), + ({}, "{}"), + ({1: "a"}, '{"1": "a"}'), + ({"foo": (1, 2, 3)}, '{"foo": [1, 2, 3]}'), + (defaultdict(list), "{}"), + (float("nan"), "NaN"), + (float("inf"), "Infinity"), + (float("-inf"), "-Infinity"), + ]: + with self.subTest(test_case): + normalized = normalize_json(test_case) + # Ensure that the normalized result is serializable. + self.assertEqual(json.dumps(normalized), expected) + + def test_bytes_decode_error(self): + with self.assertRaisesMessage(ValueError, "Unsupported value"): + normalize_json(b"\xff") + + def test_encode_error(self): + for test_case in [self, any, object(), datetime.now(), set(), Decimal("3.42")]: + with ( + self.subTest(test_case), + self.assertRaisesMessage(TypeError, "Unsupported type"), + ): + normalize_json(test_case) |
