import asyncio import pytest from unittest.mock import AsyncMock, MagicMock @pytest.fixture(scope='session') def event_loop(): loop = asyncio.new_event_loop() yield loop loop.close() @pytest.fixture def mock_odoo(): odoo = MagicMock() odoo.search_read = AsyncMock(return_value=[]) odoo.write = AsyncMock() odoo.call = AsyncMock(return_value=True) odoo.ping = AsyncMock(return_value=True) return odoo @pytest.fixture def mock_pool(): pool = MagicMock() conn = AsyncMock() conn.fetchval = AsyncMock(return_value=1) conn.fetch = AsyncMock(return_value=[]) conn.fetchrow = AsyncMock(return_value=None) conn.execute = AsyncMock() pool.acquire = MagicMock(return_value=conn) conn.__aenter__ = AsyncMock(return_value=conn) conn.__aexit__ = AsyncMock(return_value=False) return pool @pytest.fixture def mock_llm(): from agent_service.llm.llm_types import LLMResponse llm = MagicMock() llm.get_backend = AsyncMock(return_value='ollama') llm.complete = AsyncMock(return_value=LLMResponse( content='{"intent": "finance_query", "agents": ["finance_agent"], "confidence": 0.9}', tool_calls=[], backend_used='ollama', model_used='llama3', tokens_in=10, tokens_out=20, latency_ms=100, )) return llm