""" Unit tests for RAG pipeline """ import pytest from unittest.mock import Mock, patch from src.knowledge.rag_pipeline import create_knowledge_base, ingest_excel_data class TestRAGPipeline: """Test cases for RAG pipeline""" @patch('src.knowledge.rag_pipeline.get_qdrant_store') def test_create_knowledge_base_qdrant(self, mock_get_qdrant): """Test creating knowledge base with Qdrant""" mock_vector_db = Mock() mock_get_qdrant.return_value = mock_vector_db kb = create_knowledge_base(vector_store_type="qdrant") mock_get_qdrant.assert_called_once() assert kb.vector_db == mock_vector_db @patch('src.knowledge.rag_pipeline.get_pgvector_store') def test_create_knowledge_base_pgvector(self, mock_get_pgvector): """Test creating knowledge base with PgVector""" mock_vector_db = Mock() mock_get_pgvector.return_value = mock_vector_db kb = create_knowledge_base(vector_store_type="pgvector") mock_get_pgvector.assert_called_once() assert kb.vector_db == mock_vector_db def test_create_knowledge_base_invalid_type(self): """Test creating knowledge base with invalid type""" with pytest.raises(ValueError, match="Unsupported vector store type"): create_knowledge_base(vector_store_type="invalid") @patch('pandas.read_excel') def test_ingest_hadiths_data(self, mock_read_excel, sample_hadith_data): """Test ingesting hadith data""" # Mock DataFrame mock_df = Mock() mock_df.iterrows.return_value = [(0, sample_hadith_data)] mock_read_excel.return_value = mock_df # Mock knowledge base mock_kb = Mock() # Mock file operations with patch('builtins.open', Mock()): count = ingest_excel_data(mock_kb, "test.xlsx", "hadiths") assert count == 1 mock_kb.add_content.assert_called_once() @patch('pandas.read_excel') def test_ingest_articles_data(self, mock_read_excel, sample_article_data): """Test ingesting article data""" # Mock DataFrame mock_df = Mock() mock_df.iterrows.return_value = [(0, sample_article_data)] mock_read_excel.return_value = mock_df # Mock knowledge base mock_kb = Mock() # Mock file operations with patch('builtins.open', Mock()): count = ingest_excel_data(mock_kb, "test.xlsx", "articles") assert count == 1 mock_kb.add_content.assert_called_once()