test script
This commit is contained in:
parent
65bc7622f8
commit
d965d96cde
105
tests/test_dialog_full_flow.py
Normal file
105
tests/test_dialog_full_flow.py
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
import unittest
|
||||
import asyncio
|
||||
import os
|
||||
import shutil
|
||||
from pathlib import Path
|
||||
from app.routers.ingest import save_note, SaveRequest
|
||||
from app.core.ingestion import IngestionService
|
||||
|
||||
# Wir simulieren den API-Aufruf direkt
|
||||
class TestDialogFullFlow(unittest.IsolatedAsyncioTestCase):
|
||||
|
||||
def setUp(self):
|
||||
# Test Vault definieren
|
||||
self.test_vault = os.path.abspath("./vault_test_dialog")
|
||||
os.environ["MINDNET_VAULT_ROOT"] = self.test_vault
|
||||
|
||||
# Sicherstellen, dass das Verzeichnis existiert
|
||||
if not os.path.exists(self.test_vault):
|
||||
os.makedirs(self.test_vault)
|
||||
|
||||
def tearDown(self):
|
||||
# Cleanup nach dem Test (optional, zum Debuggen auskommentieren)
|
||||
if os.path.exists(self.test_vault):
|
||||
shutil.rmtree(self.test_vault)
|
||||
|
||||
async def test_a_save_journal_entry(self):
|
||||
"""
|
||||
Testet den 'Fast Path' (Journal) -> sliding_short.
|
||||
Erwartung: Sehr schnell, keine LLM-Warnungen im Log.
|
||||
"""
|
||||
print("\n--- TEST A: Journal Save (Fast Path) ---")
|
||||
|
||||
content = """---
|
||||
type: journal
|
||||
status: active
|
||||
title: Test Journal Entry
|
||||
---
|
||||
# Daily Log
|
||||
Heute haben wir das Chunking-System getestet.
|
||||
Es lief alles sehr schnell durch.
|
||||
"""
|
||||
req = SaveRequest(
|
||||
markdown_content=content,
|
||||
filename="2025-12-12-test-journal.md",
|
||||
folder="00_Inbox"
|
||||
)
|
||||
|
||||
# Rufe die API-Funktion auf (simuliert Frontend "Save")
|
||||
response = await save_note(req)
|
||||
|
||||
# Checks
|
||||
self.assertEqual(response.status, "success")
|
||||
self.assertTrue(response.stats['chunks'] > 0, "Keine Chunks erstellt!")
|
||||
|
||||
# File Check
|
||||
file_path = Path(response.file_path)
|
||||
self.assertTrue(file_path.exists(), "Datei wurde nicht geschrieben!")
|
||||
print(f"✅ Journal gespeichert: {response.note_id}")
|
||||
|
||||
async def test_b_save_project_entry(self):
|
||||
"""
|
||||
Testet den 'Smart Path' (Project) -> sliding_smart_edges.
|
||||
Erwartung: Smart Edge Allocation läuft (LLM Aufruf), dauert etwas länger.
|
||||
"""
|
||||
print("\n--- TEST B: Project Save (Smart Path) ---")
|
||||
|
||||
# Ein Text mit expliziten Kanten, um den Smart Chunker zu triggern
|
||||
content = """---
|
||||
type: project
|
||||
status: active
|
||||
title: Test Projekt Smart Chunking
|
||||
---
|
||||
# Mission
|
||||
Wir wollen [[leitbild-werte#Integrität]] sicherstellen.
|
||||
Das System muss stabil sein.
|
||||
|
||||
# Status
|
||||
Wir nutzen [[rel:uses|Ollama]] für die Intelligenz.
|
||||
"""
|
||||
req = SaveRequest(
|
||||
markdown_content=content,
|
||||
filename="Test_Projekt_Smart.md",
|
||||
folder="Projects"
|
||||
)
|
||||
|
||||
# API Call
|
||||
response = await save_note(req)
|
||||
|
||||
# Checks
|
||||
self.assertEqual(response.status, "success")
|
||||
self.assertTrue(response.stats['chunks'] > 0)
|
||||
self.assertTrue(response.stats['edges'] > 0, "Kanten sollten gefunden werden (mind. structure edges)")
|
||||
|
||||
print(f"✅ Projekt gespeichert: {response.note_id}")
|
||||
|
||||
# Optional: Prüfen ob Qdrant Daten hat (via IngestionService Helper)
|
||||
service = IngestionService()
|
||||
chunks_missing, edges_missing = service._artifacts_missing(response.note_id)
|
||||
|
||||
self.assertFalse(chunks_missing, "Chunks fehlen in Qdrant!")
|
||||
self.assertFalse(edges_missing, "Edges fehlen in Qdrant!")
|
||||
print("✅ Qdrant Persistenz verifiziert.")
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
Loading…
Reference in New Issue
Block a user