Spaces:
Sleeping
Sleeping
| """Tests for RAG system.""" | |
| import pytest | |
| from pathlib import Path | |
| import tempfile | |
| import shutil | |
| from src.rag import ProjectRAG | |
| class TestProjectRAG: | |
| """Tests for ProjectRAG class.""" | |
| def test_rag_initialization(self, temp_data_dir): | |
| """Test RAG system initializes correctly.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| assert rag is not None | |
| assert rag.data_dir == temp_data_dir | |
| def test_load_and_index(self, temp_data_dir): | |
| """Test loading and indexing meetings.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| assert len(rag.meetings) == 1 | |
| assert rag.meetings[0].project_name == "test_project" | |
| def test_get_all_projects(self, temp_data_dir): | |
| """Test getting all project names.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| projects = rag.get_all_projects() | |
| assert "test_project" in projects | |
| def test_get_open_action_items(self, temp_data_dir): | |
| """Test getting open action items.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| items = rag.get_open_action_items() | |
| # Should have 2 open items (Alice and Bob's tasks) | |
| assert len(items) == 2 | |
| def test_get_open_action_items_filtered(self, temp_data_dir): | |
| """Test getting open action items filtered by project.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| items = rag.get_open_action_items(project="test_project") | |
| assert len(items) == 2 | |
| items = rag.get_open_action_items(project="nonexistent") | |
| assert len(items) == 0 | |
| def test_get_blockers(self, temp_data_dir): | |
| """Test getting blockers.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| blockers = rag.get_blockers() | |
| assert len(blockers) == 2 | |
| def test_search(self, temp_data_dir): | |
| """Test semantic search.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| results = rag.search("login page implementation") | |
| assert len(results) > 0 | |
| def test_search_with_project_filter(self, temp_data_dir): | |
| """Test semantic search with project filter.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| results = rag.search("login", project_filter="test_project") | |
| assert len(results) > 0 | |
| results = rag.search("login", project_filter="nonexistent") | |
| assert len(results) == 0 | |
| def test_get_recent_decisions(self, temp_data_dir): | |
| """Test getting recent decisions.""" | |
| with tempfile.TemporaryDirectory() as persist_dir: | |
| rag = ProjectRAG(temp_data_dir, persist_dir=Path(persist_dir)) | |
| rag.load_and_index() | |
| decisions = rag.get_recent_decisions() | |
| assert len(decisions) == 2 | |