feat(mcp): 5 outils todos + tests

Ajoute mcp_server.py avec get_todos, create_todo, update_todo, postpone_todo, delete_todo.
Ajoute test_mcp.py (7 tests). Corrige conftest pour injecter NullPool dans AsyncSessionLocal des outils MCP (évite les conflits d'event loop entre tests).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 22:58:20 +02:00
co-authored by Claude Sonnet 4.6
parent 24598c836b
commit 05db49f27a
3 changed files with 250 additions and 0 deletions
+14
View File
@@ -5,6 +5,7 @@ from sqlalchemy.pool import NullPool
from app.main import app
from app.core import database
from app.core.config import settings
import app.api.mcp_server as mcp_server_module
def make_test_engine():
@@ -12,6 +13,19 @@ def make_test_engine():
return create_async_engine(settings.database_url, poolclass=NullPool)
@pytest.fixture(autouse=True)
async def mcp_nullpool_session():
"""Remplace AsyncSessionLocal dans mcp_server par un sessionmaker NullPool
pour éviter les conflits d'event loop entre tests."""
engine = make_test_engine()
test_session_factory = async_sessionmaker(engine, expire_on_commit=False)
original = mcp_server_module.AsyncSessionLocal
mcp_server_module.AsyncSessionLocal = test_session_factory
yield
mcp_server_module.AsyncSessionLocal = original
await engine.dispose()
@pytest.fixture
async def db_session():
engine = make_test_engine()