"""Tests for the database runtime and V2 schema bootstrap behavior.""" import pytest from sqlalchemy import inspect from transcription.config import Settings from transcription.config import SqliteSettings from transcription.db import create_all from transcription.db import dispose_database_runtime from transcription.db import initialize_database_runtime from transcription.db import session_scope @pytest.mark.asyncio async def test_create_all_creates_expected_tables(tmp_path): settings = Settings( openrouter_api_key="test-key", database=SqliteSettings(path=str(tmp_path / "schema.db")), environment="test", ) runtime = initialize_database_runtime(settings=settings) try: await create_all(engine=runtime.engine) async with runtime.engine.connect() as conn: table_names = set(await conn.run_sync(lambda c: inspect(c).get_table_names())) assert "document" in table_names assert "person" in table_names assert "document_person" in table_names assert "job" in table_names assert "source" in table_names assert "job_source" in table_names assert "revision" not in table_names finally: await dispose_database_runtime() @pytest.mark.asyncio async def test_get_session_yields_async_session(tmp_path): settings = Settings( openrouter_api_key="test-key", database=SqliteSettings(path=str(tmp_path / "session.db")), environment="test", ) initialize_database_runtime(settings=settings) try: async with session_scope(settings=settings) as session: assert session is not None finally: await dispose_database_runtime() def test_bootstrap_policy_production_defaults_false(): settings = Settings(openrouter_api_key="test-key", environment="production") assert settings.should_bootstrap_schema is False def test_bootstrap_policy_development_defaults_true(): settings = Settings(openrouter_api_key="test-key", environment="development") assert settings.should_bootstrap_schema is True def test_bootstrap_policy_explicit_override_true(): settings = Settings( openrouter_api_key="test-key", environment="production", bootstrap_schema_on_startup=True, ) assert settings.should_bootstrap_schema is True