From 63423941beda763a9013f662fdfe01dc6d455767 Mon Sep 17 00:00:00 2001 From: kievzenit Date: Mon, 11 Aug 2025 17:29:35 +0300 Subject: [PATCH] added fixture registration for pymongo storage --- tests/conftest.py | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/tests/conftest.py b/tests/conftest.py index fe5c3d22..6a0c37f4 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -17,6 +17,7 @@ from aiogram.fsm.storage.memory import ( SimpleEventIsolation, ) from aiogram.fsm.storage.mongo import MongoStorage +from aiogram.fsm.storage.pymongo import PyMongoStorage from aiogram.fsm.storage.redis import RedisStorage from tests.mocked_bot import MockedBot @@ -102,6 +103,36 @@ async def mongo_storage(mongo_server): await storage.close() +@pytest.fixture() +def pymongo_server(request): + mongo_uri = request.config.getoption("--mongo") + if mongo_uri is None: + pytest.skip(SKIP_MESSAGE_PATTERN.format(db="mongo")) + else: + return mongo_uri + + +@pytest.fixture() +async def pymongo_storage(pymongo_server): + try: + parse_mongo_url(pymongo_server) + except InvalidURI as e: + raise UsageError(INVALID_URI_PATTERN.format(db="mongo", uri=pymongo_server, err=e)) + storage = PyMongoStorage.from_url( + url=pymongo_server, + connection_kwargs={"serverSelectionTimeoutMS": 2000}, + ) + try: + await storage._client.server_info() + except PyMongoError as e: + pytest.fail(str(e)) + else: + yield storage + await storage._client.drop_database(storage._database) + finally: + await storage.close() + + @pytest.fixture() async def memory_storage(): storage = MemoryStorage()