From 9c55795912426685f803343db0aabb2b198de731 Mon Sep 17 00:00:00 2001 From: Noah Stapp Date: Thu, 30 Jan 2025 13:01:44 -0500 Subject: [PATCH] PYTHON-5086 - Convert test.json_util integration test to async --- .../test_json_util_integration.py | 28 +++++++++++++++++++ test/test_json_util.py | 23 ++------------- test/test_json_util_integration.py | 28 +++++++++++++++++++ tools/synchro.py | 1 + 4 files changed, 59 insertions(+), 21 deletions(-) create mode 100644 test/asynchronous/test_json_util_integration.py create mode 100644 test/test_json_util_integration.py diff --git a/test/asynchronous/test_json_util_integration.py b/test/asynchronous/test_json_util_integration.py new file mode 100644 index 0000000000..4c02792d89 --- /dev/null +++ b/test/asynchronous/test_json_util_integration.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +from test.asynchronous import AsyncIntegrationTest +from typing import Any, List, MutableMapping + +from bson import Binary, Code, DBRef, ObjectId, json_util +from bson.binary import USER_DEFINED_SUBTYPE + +_IS_SYNC = False + + +class TestJsonUtilRoundtrip(AsyncIntegrationTest): + async def test_cursor(self): + db = self.db + + await db.drop_collection("test") + docs: List[MutableMapping[str, Any]] = [ + {"foo": [1, 2]}, + {"bar": {"hello": "world"}}, + {"code": Code("function x() { return 1; }")}, + {"bin": Binary(b"\x00\x01\x02\x03\x04", USER_DEFINED_SUBTYPE)}, + {"dbref": {"_ref": DBRef("simple", ObjectId("509b8db456c02c5ab7e63c34"))}}, + ] + + await db.test.insert_many(docs) + reloaded_docs = json_util.loads(json_util.dumps(await (db.test.find()).to_list())) + for doc in docs: + self.assertTrue(doc in reloaded_docs) diff --git a/test/test_json_util.py b/test/test_json_util.py index 821ca76da0..8aed4a82bc 100644 --- a/test/test_json_util.py +++ b/test/test_json_util.py @@ -21,13 +21,13 @@ import sys import uuid from collections import OrderedDict -from typing import Any, List, MutableMapping, Tuple, Type +from typing import Any, Tuple, Type from bson.codec_options import CodecOptions, DatetimeConversion sys.path[0:0] = [""] -from test import IntegrationTest, unittest +from test import unittest from bson import EPOCH_AWARE, EPOCH_NAIVE, SON, DatetimeMS, json_util from bson.binary import ( @@ -636,24 +636,5 @@ class MyBinary(Binary): self.assertEqual(json_util.dumps(MyBinary(b"bin", USER_DEFINED_SUBTYPE)), expected_json) -class TestJsonUtilRoundtrip(IntegrationTest): - def test_cursor(self): - db = self.db - - db.drop_collection("test") - docs: List[MutableMapping[str, Any]] = [ - {"foo": [1, 2]}, - {"bar": {"hello": "world"}}, - {"code": Code("function x() { return 1; }")}, - {"bin": Binary(b"\x00\x01\x02\x03\x04", USER_DEFINED_SUBTYPE)}, - {"dbref": {"_ref": DBRef("simple", ObjectId("509b8db456c02c5ab7e63c34"))}}, - ] - - db.test.insert_many(docs) - reloaded_docs = json_util.loads(json_util.dumps(db.test.find())) - for doc in docs: - self.assertTrue(doc in reloaded_docs) - - if __name__ == "__main__": unittest.main() diff --git a/test/test_json_util_integration.py b/test/test_json_util_integration.py new file mode 100644 index 0000000000..acab4f3182 --- /dev/null +++ b/test/test_json_util_integration.py @@ -0,0 +1,28 @@ +from __future__ import annotations + +from test import IntegrationTest +from typing import Any, List, MutableMapping + +from bson import Binary, Code, DBRef, ObjectId, json_util +from bson.binary import USER_DEFINED_SUBTYPE + +_IS_SYNC = True + + +class TestJsonUtilRoundtrip(IntegrationTest): + def test_cursor(self): + db = self.db + + db.drop_collection("test") + docs: List[MutableMapping[str, Any]] = [ + {"foo": [1, 2]}, + {"bar": {"hello": "world"}}, + {"code": Code("function x() { return 1; }")}, + {"bin": Binary(b"\x00\x01\x02\x03\x04", USER_DEFINED_SUBTYPE)}, + {"dbref": {"_ref": DBRef("simple", ObjectId("509b8db456c02c5ab7e63c34"))}}, + ] + + db.test.insert_many(docs) + reloaded_docs = json_util.loads(json_util.dumps((db.test.find()).to_list())) + for doc in docs: + self.assertTrue(doc in reloaded_docs) diff --git a/tools/synchro.py b/tools/synchro.py index 897e5e8018..3d110fac11 100644 --- a/tools/synchro.py +++ b/tools/synchro.py @@ -207,6 +207,7 @@ def async_only_test(f: str) -> bool: "test_data_lake.py", "test_encryption.py", "test_grid_file.py", + "test_json_util_integration.py", "test_logger.py", "test_monitoring.py", "test_raw_bson.py",