PYTHON-4179 Verify document_class type in json_util.loads test (#1509)

This commit is contained in:
Shane Harvey 2024-02-06 14:18:09 -08:00 committed by GitHub
parent 051ff77062
commit 296a44df46
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -20,6 +20,7 @@ import json
import re
import sys
import uuid
from collections import OrderedDict
from typing import Any, List, MutableMapping, Tuple, Type
from bson.codec_options import CodecOptions, DatetimeConversion
@ -557,15 +558,13 @@ class TestJsonUtil(unittest.TestCase):
)
def test_loads_document_class(self):
# document_class dict should always work
self.assertEqual(
{"foo": "bar"},
json_util.loads('{"foo": "bar"}', json_options=JSONOptions(document_class=dict)),
)
self.assertEqual(
SON([("foo", "bar"), ("b", 1)]),
json_util.loads('{"foo": "bar", "b": 1}', json_options=JSONOptions(document_class=SON)),
)
json_doc = '{"foo": "bar", "b": 1, "d": {"a": 1}}'
expected_doc = {"foo": "bar", "b": 1, "d": {"a": 1}}
for cls in (dict, SON, OrderedDict):
doc = json_util.loads(json_doc, json_options=JSONOptions(document_class=cls))
self.assertEqual(doc, expected_doc)
self.assertIsInstance(doc, cls)
self.assertIsInstance(doc["d"], cls)
def test_encode_subclass(self):
cases: list[Tuple[Type, Any]] = [