Initial release: async repository layer over SQLModel

This commit is contained in:
2026-08-13 22:25:59 +03:00
commit 3d85c2b5dd
26 changed files with 2252 additions and 0 deletions

48
tests/test_container.py Normal file
View File

@@ -0,0 +1,48 @@
from sqlalchemy.ext.asyncio import AsyncEngine
from metaorm import RepositoriesContainer
from tests.models import UserRepository
class TestRepositoriesContainer:
async def test_engine_property_returns_async_engine(
self,
repositories_container: RepositoriesContainer,
) -> None:
assert isinstance(repositories_container.engine, AsyncEngine)
async def test_session_is_none_without_transaction(
self,
repositories_container: RepositoriesContainer,
) -> None:
assert repositories_container.session is None
async def test_transaction_creates_session(
self,
repositories_container: RepositoriesContainer,
) -> None:
assert repositories_container.session is None
async with repositories_container.transaction() as session:
assert session is not None
assert repositories_container.session is session
assert repositories_container.session is None
async def test_nested_transaction_yields_same_session(
self,
repositories_container: RepositoriesContainer,
) -> None:
async with (
repositories_container.transaction() as outer_session,
repositories_container.transaction() as inner_session,
):
assert inner_session is outer_session
async def test_get_repository_returns_repository_instance(
self,
repositories_container: RepositoriesContainer,
) -> None:
repository = repositories_container.get_repository(UserRepository)
assert isinstance(repository, UserRepository)