""" Integration tests for API endpoints """ import pytest from fastapi.testclient import TestClient from unittest.mock import patch, Mock class TestAPIIntegration: """Integration tests for API""" @pytest.fixture def client(self): """Test client fixture""" # Import here to avoid circular imports from src.main import app return TestClient(app) def test_health_endpoint(self, client): """Test health check endpoint""" response = client.get("/health") assert response.status_code == 200 data = response.json() assert "status" in data assert data["status"] == "healthy" @patch('src.api.routes.IslamicScholarAgent') def test_chat_endpoint_success(self, mock_agent_class, client): """Test successful chat endpoint""" # Mock the agent mock_agent_instance = Mock() mock_response = Mock() mock_response.content = "Test Islamic knowledge response" mock_agent_instance.run.return_value = mock_response mock_agent_instance.get_agent.return_value = mock_agent_instance mock_agent_class.return_value = mock_agent_instance response = client.post("/chat", json={"message": "What is Islamic knowledge?"}) assert response.status_code == 200 data = response.json() assert "response" in data assert data["response"] == "Test Islamic knowledge response" @patch('src.api.routes.IslamicScholarAgent') def test_chat_endpoint_error(self, mock_agent_class, client): """Test chat endpoint with error""" # Mock the agent to raise exception mock_agent_instance = Mock() mock_agent_instance.run.side_effect = Exception("Test error") mock_agent_instance.get_agent.return_value = mock_agent_instance mock_agent_class.return_value = mock_agent_instance response = client.post("/chat", json={"message": "Test message"}) assert response.status_code == 500 data = response.json() assert "detail" in data