chore: snapshot workflow migration progress

This commit is contained in:
2026-04-12 11:49:04 +02:00
parent 0cd02513d5
commit 3e810c74a3
163 changed files with 31774 additions and 2753 deletions
+23 -10
View File
@@ -113,32 +113,44 @@ def parsed_anschlagplatten(parsed_excel_all):
# ── Test-DB (nutzt separate Test-Datenbank) ──────────────────────────────────
import os
import uuid
import pytest_asyncio
from typing import AsyncGenerator
from httpx import AsyncClient, ASGITransport
from sqlalchemy.engine import make_url
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker
TEST_DB_URL = os.environ.get(
"TEST_DATABASE_URL",
"postgresql+asyncpg://hartomat:hartomat@localhost:5432/hartomat_test"
)
from app.config import settings
from tests.db_test_utils import reset_public_schema_async, resolve_test_db_url
def _resolve_test_db_url() -> str:
return resolve_test_db_url(async_driver=True)
def _sync_settings_to_test_database() -> None:
resolved = make_url(resolve_test_db_url(async_driver=False))
settings.postgres_host = resolved.host or settings.postgres_host
settings.postgres_port = int(resolved.port or settings.postgres_port)
settings.postgres_user = resolved.username or settings.postgres_user
settings.postgres_password = resolved.password or settings.postgres_password
settings.postgres_db = resolved.database or settings.postgres_db
_sync_settings_to_test_database()
@pytest_asyncio.fixture
async def test_engine():
from app.database import Base
from sqlalchemy import text
import app.models # noqa - register all models
engine = create_async_engine(TEST_DB_URL, echo=False)
engine = create_async_engine(_resolve_test_db_url(), echo=False)
async with engine.begin() as conn:
await reset_public_schema_async(conn)
await conn.run_sync(Base.metadata.create_all)
yield engine
# Use CASCADE to handle circular FK dependencies in drop
async with engine.begin() as conn:
await conn.execute(text("DROP SCHEMA public CASCADE"))
await conn.execute(text("CREATE SCHEMA public"))
await reset_public_schema_async(conn)
await engine.dispose()
@@ -229,6 +241,7 @@ def mock_celery_tasks(monkeypatch):
task_paths = [
"app.domains.materials.tasks.refresh_asset_library_catalog",
"app.tasks.step_tasks.process_step_file",
"app.tasks.step_tasks.render_graph_thumbnail",
"app.tasks.step_tasks.render_step_thumbnail",
"app.domains.imports.tasks.validate_excel_import",
"app.domains.rendering.tasks.render_still_task",