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