| 12345678910111213141516171819202122232425262728293031323334353637 |
- """接待建议应将用户指定的日期传给天气助手。"""
- import unittest
- from types import SimpleNamespace
- from unittest.mock import AsyncMock, Mock
- from langchain_core.messages import AIMessage
- from langchain_core.prompts import ChatPromptTemplate
- from langchain_core.runnables import RunnableLambda
- from chat_service import ChatService
- from memory import ConversationMemory
- class CityWeatherDateTests(unittest.IsolatedAsyncioTestCase):
- async def test_preserves_explicit_and_relative_dates(self):
- for question in ["2026年9月26日在北京接待客户", "后天在北京接待客户"]:
- service = ChatService.__new__(ChatService)
- service.memory = ConversationMemory()
- service._city_extract_prompt = ChatPromptTemplate.from_template("{query}")
- service.llm = RunnableLambda(lambda _: AIMessage(content="北京"))
- agent = Mock()
- agent.send_task_async = AsyncMock(return_value=SimpleNamespace(
- status=SimpleNamespace(state="completed"),
- artifacts=[{"parts": [{"text": "北京天气结果"}]}],
- ))
- service.agent_network = Mock()
- service.agent_network.get_agent.return_value = agent
- result = await service._fetch_weather_for_city_service(question)
- self.assertEqual(result, "北京天气结果")
- sent_task = agent.send_task_async.await_args.args[0]
- self.assertIn(question, sent_task.message["content"]["text"])
- if __name__ == "__main__":
- unittest.main()
|