Files
Mutual_Fund/tests/test_mock_ingest.py
T

53 lines
2.0 KiB
Python
Raw Normal View History

import unittest
from pathlib import Path
from unittest.mock import AsyncMock
from rag.mock_ingest import MOCK_DOCUMENTS, ingest_mock_documents
from rag.milvus_delete import delete_document_vectors
class MockIngestTests(unittest.IsolatedAsyncioTestCase):
async def test_mock_documents_are_chunked_embedded_and_inserted(self):
milvus = AsyncMock()
embedder = AsyncMock()
embedder.return_value = [[0.0] * 768]
await ingest_mock_documents(milvus, embedder=embedder)
self.assertEqual(len(MOCK_DOCUMENTS), 3)
self.assertEqual(embedder.await_count, len(MOCK_DOCUMENTS))
self.assertEqual(milvus.insert.await_count, len(MOCK_DOCUMENTS))
inserted = [call.kwargs for call in milvus.insert.await_args_list]
self.assertEqual(
{item["collection_name"] for item in inserted},
{item.collection for item in MOCK_DOCUMENTS},
)
for call_args in inserted:
rows = call_args["data"]
self.assertTrue(rows)
self.assertTrue({"doc_id", "title", "section_title", "text", "strategy", "vector"} <= rows[0].keys())
self.assertEqual(len(rows[0]["vector"]), 768)
def test_mock_markdown_files_are_present(self):
for item in MOCK_DOCUMENTS:
self.assertTrue(Path(item.path).is_file())
self.assertEqual(Path(item.path).suffix, ".md")
faq = next(item for item in MOCK_DOCUMENTS if item.collection == "fin_faq")
self.assertEqual(
sum(line.startswith("Q:") for line in Path(faq.path).read_text(encoding="utf-8").splitlines()),
40,
)
async def test_deletes_document_rows_by_doc_id_from_all_knowledge_collections(self):
milvus = AsyncMock()
await delete_document_vectors("doc-123", milvus_client=milvus)
self.assertEqual(milvus.delete.await_count, 3)
for call_args in milvus.delete.await_args_list:
self.assertEqual(call_args.kwargs["filter"], 'doc_id == "doc-123"')
if __name__ == "__main__":
unittest.main()