From 9780f0e91460986bae4866c8e304c0a21cb081a4 Mon Sep 17 00:00:00 2001 From: Ben Brady Date: Sat, 9 Aug 2025 02:49:00 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=94=A8=20added=20additional=20jsonable=5F?= =?UTF-8?q?encoder=20tests?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_jsonable_encoder.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tests/test_jsonable_encoder.py b/tests/test_jsonable_encoder.py index 1906d6bf1..e7e447c1d 100644 --- a/tests/test_jsonable_encoder.py +++ b/tests/test_jsonable_encoder.py @@ -88,6 +88,30 @@ def test_encode_dict(): } +def test_encode_dict_with_nonprimative_keys(): + class CustomString: + value: str + + def __init__(self, value: str) -> None: + self.value = value + + assert jsonable_encoder( + {CustomString("foo"): "bar"}, + custom_encoder={CustomString: lambda v: v.value} + ) == {"foo": "bar"} + + +def test_encode_dict_with_sqlalchemy_safe(): + obj = {"_sa_foo": "foo", "bar": "bar"} + assert jsonable_encoder(obj, sqlalchemy_safe=True) == {"bar": "bar"} + assert jsonable_encoder(obj, sqlalchemy_safe=False ) == obj + + +def test_encode_dict_with_exclude_none(): + assert jsonable_encoder({"foo": None}, exclude_none=True) == {} + assert jsonable_encoder({"foo": None}, exclude_none=False) == {"foo": None} + + def test_encode_class(): person = Person(name="Foo") pet = Pet(owner=person, name="Firulais")