Spaces:
Sleeping
Sleeping
| import unittest | |
| from unittest.mock import patch, MagicMock | |
| from graph.workflow import LangGraphWorkflow, WorkflowState | |
| class TestLangGraphWorkflow(unittest.TestCase): | |
| def setUp(self): | |
| # Create mocks for agents | |
| self.router_agent_patch = patch('graph.workflow.RouterAgent') | |
| self.weather_agent_patch = patch('graph.workflow.WeatherAgent') | |
| self.rag_agent_patch = patch('graph.workflow.RAGAgent') | |
| self.evaluator_patch = patch('graph.workflow.LangSmithEvaluator') | |
| self.mock_router_agent_class = self.router_agent_patch.start() | |
| self.mock_weather_agent_class = self.weather_agent_patch.start() | |
| self.mock_rag_agent_class = self.rag_agent_patch.start() | |
| self.mock_evaluator_class = self.evaluator_patch.start() | |
| self.mock_router_agent = self.mock_router_agent_class.return_value | |
| self.mock_weather_agent = self.mock_weather_agent_class.return_value | |
| self.mock_rag_agent = self.mock_rag_agent_class.return_value | |
| self.mock_evaluator = self.mock_evaluator_class.return_value | |
| # Initialize workflow | |
| self.workflow = LangGraphWorkflow() | |
| def tearDown(self): | |
| self.router_agent_patch.stop() | |
| self.weather_agent_patch.stop() | |
| self.rag_agent_patch.stop() | |
| self.evaluator_patch.stop() | |
| def test_route_to_weather(self): | |
| # Configure mock | |
| self.mock_router_agent.route_query.return_value = "weather" | |
| # Create state | |
| state = WorkflowState(query="What's the weather in London?") | |
| # Call the method | |
| result = self.workflow.route(state) | |
| # Assertions | |
| self.assertEqual(result.action, "weather") | |
| self.mock_router_agent.route_query.assert_called_once_with("What's the weather in London?") | |
| def test_route_to_document(self): | |
| # Configure mock | |
| self.mock_router_agent.route_query.return_value = "document" | |
| # Create state | |
| state = WorkflowState(query="What is LangChain?") | |
| # Call the method | |
| result = self.workflow.route(state) | |
| # Assertions | |
| self.assertEqual(result.action, "document") | |
| self.mock_router_agent.route_query.assert_called_once_with("What is LangChain?") | |
| def test_process_weather(self): | |
| # Configure mock | |
| self.mock_weather_agent.get_weather_response.return_value = { | |
| "city": "London", | |
| "weather_data": {"temp": 15.5}, | |
| "response": "The weather in London is 15.5°C." | |
| } | |
| # Create state | |
| state = WorkflowState(query="What's the weather in London?", action="weather") | |
| # Call the method | |
| result = self.workflow.process_weather(state) | |
| # Assertions | |
| self.assertEqual(result.city, "London") | |
| self.assertEqual(result.weather_data, {"temp": 15.5}) | |
| self.assertEqual(result.response, "The weather in London is 15.5°C.") |