""" Fixtures para los tests del shape. Levanta una MariaDB efímera con testcontainers para que los tests corran contra una BD real (no mocks). El reusable workflow ADR-038 garantiza que Docker está disponible en el runner. """ import os from collections.abc import Iterator import pytest from fastapi.testclient import TestClient from testcontainers.mariadb import MariaDbContainer @pytest.fixture(scope="session") def mariadb_url() -> Iterator[str]: """MariaDB efímera por sesión de tests; URL exportada como DATABASE_URL.""" with MariaDbContainer("mariadb:11") as mdb: url = mdb.get_connection_url().replace("mysql://", "mysql+pymysql://", 1) os.environ["DATABASE_URL"] = url os.environ["MIGRATION_DATABASE_URL"] = url yield url @pytest.fixture def client(mariadb_url: str) -> Iterator[TestClient]: """TestClient con la app cargada contra la BD efímera.""" from app.main import create_app app = create_app() with TestClient(app) as c: yield c