""" Tests for query pipeline """ import pytest from unittest.mock import AsyncMock, patch, MagicMock from app.query_pipeline import answer_query, _build_citations class TestQueryPipeline: """Tests for RAG query pipeline""" @pytest.mark.asyncio async def test_answer_query_no_documents(self): """Test query when no documents found""" with patch("app.query_pipeline._retrieve_documents", return_value=[]): result = await answer_query( dao_id="test-dao", question="Test question" ) assert "answer" in result assert "На жаль, я не знайшов" in result["answer"] assert result["citations"] == [] @pytest.mark.asyncio async def test_build_citations(self): """Test citation building""" documents = [ {"content": "Test content 1", "meta": {"doc_id": "doc1", "page": 1, "section": "Section 1"}}, {"content": "Test content 2", "meta": {"doc_id": "doc2", "page": 2}}, ] citations = _build_citations([MagicMock(**d) for d in documents]) assert len(citations) == 2 assert citations[0]["doc_id"] == "doc1" assert citations[0]["page"] == 1 assert citations[0]["section"] == "Section 1" assert citations[1]["doc_id"] == "doc2" assert citations[1]["page"] == 2