"""pytest 公共 fixture。""" from __future__ import annotations from unittest.mock import MagicMock import pytest from fastapi.testclient import TestClient from app.main import app from app.repository.advisor_rel_repository import AdvisorRelRepository from app.repository.agent_repository import AgentSessionRepository from app.repository.audit_repository import AuditRepository @pytest.fixture def client(): return TestClient(app) @pytest.fixture(autouse=True) def mock_db(monkeypatch): audit = MagicMock() session = MagicMock() advisor = MagicMock() audit.insert = MagicMock() session.ensure_session = MagicMock(return_value="sess-test-001") session.next_seq = MagicMock(return_value=1) session.insert_message = MagicMock() advisor.is_assigned = MagicMock(return_value=True) monkeypatch.setattr(AuditRepository, "__init__", lambda self, engine=None: None) monkeypatch.setattr(AuditRepository, "insert", audit.insert) monkeypatch.setattr(AgentSessionRepository, "__init__", lambda self, engine=None: None) monkeypatch.setattr(AgentSessionRepository, "ensure_session", session.ensure_session) monkeypatch.setattr(AgentSessionRepository, "next_seq", session.next_seq) monkeypatch.setattr(AgentSessionRepository, "insert_message", session.insert_message) monkeypatch.setattr(AdvisorRelRepository, "__init__", lambda self, engine=None, core_ro=None: None) monkeypatch.setattr(AdvisorRelRepository, "is_assigned", advisor.is_assigned) yield {"audit": audit, "session": session, "advisor": advisor}