""" Integration tests for the complete RAG pipeline """ import pytest import tempfile import os from unittest.mock import patch, Mock import pandas as pd class TestRAGPipelineIntegration: """Integration tests for complete RAG pipeline""" @pytest.fixture def temp_excel_file(self, sample_hadith_data): """Create temporary Excel file for testing""" df = pd.DataFrame([sample_hadith_data]) with tempfile.NamedTemporaryFile(suffix='.xlsx', delete=False) as tmp: df.to_excel(tmp.name, index=False) yield tmp.name # Cleanup os.unlink(tmp.name) @patch('src.knowledge.vector_store.get_qdrant_store') def test_full_ingestion_pipeline(self, mock_get_qdrant, temp_excel_file): """Test full data ingestion pipeline""" # Mock vector store mock_vector_db = Mock() mock_get_qdrant.return_value = mock_vector_db # Mock knowledge base with patch('src.knowledge.rag_pipeline.Knowledge') as mock_kb_class: mock_kb_instance = Mock() mock_kb_class.return_value = mock_kb_instance # Import and run ingestion from src.knowledge.rag_pipeline import create_knowledge_base, ingest_excel_data # Create knowledge base kb = create_knowledge_base(vector_store_type="qdrant") # Ingest data count = ingest_excel_data(kb, temp_excel_file, "hadiths") # Verify calls mock_get_qdrant.assert_called_once() mock_kb_class.assert_called_once_with(vector_db=mock_vector_db) assert count == 1 mock_kb_instance.add_content.assert_called_once() @patch('src.agents.islamic_scholar_agent.IslamicScholarAgent') @patch('src.models.openai.OpenAILikeModel') @patch('src.knowledge.rag_pipeline.create_knowledge_base') def test_agent_with_knowledge_base(self, mock_create_kb, mock_model_class, mock_agent_class): """Test agent initialization with knowledge base""" # Setup mocks mock_model_instance = Mock() mock_model_instance.get_model.return_value = Mock() mock_model_class.return_value = mock_model_instance mock_kb = Mock() mock_create_kb.return_value = mock_kb mock_agent_instance = Mock() mock_agent_class.return_value = mock_agent_instance # Import and create agent from src.agents.islamic_scholar_agent import IslamicScholarAgent agent = IslamicScholarAgent(mock_model_instance.get_model(), mock_kb) # Verify initialization mock_agent_class.assert_called_once_with( mock_model_instance.get_model(), mock_kb )