import pytest import pandas as pd # Importiere die Top-Level-Funktionen, die die Integration darstellen from app import run_and_display from cognitive_mapping_probe.orchestrator_seismograph import run_seismic_analysis def test_end_to_end_with_mock_llm(mock_llm, mocker): """ Ein End-to-End-Integrationstest, der den gesamten Datenfluss von der App über den Orchestrator bis zum (gemockten) LLM validiert. Dieser Test ersetzt die Notwendigkeit für `pre_flight_checks.py`, indem er die gesamte Kette in einer kontrollierten Testumgebung ausführt. """ # 1. Führe den Orchestrator mit dem `mock_llm` aus. # Dies ist ein echter Aufruf, keine gemockte Funktion. results = run_seismic_analysis( model_id="mock_model", prompt_type="control_long_prose", seed=42, num_steps=5, progress_callback=mocker.MagicMock() ) # ASSERT 1: Überprüfe, ob der Orchestrator plausible Ergebnisse liefert assert "stats" in results assert len(results["state_deltas"]) == 5 assert results["stats"]["mean_delta"] > 0 # 2. Mocke nun den Orchestrator, um die App-Logik mit seinen Ergebnissen zu füttern mocker.patch('app.run_seismic_analysis', return_value=results) # 3. Führe die App-Logik aus _, plot_df, _ = run_and_display( model_id="mock_model", prompt_type="control_long_prose", seed=42, num_steps=5, progress=mocker.MagicMock() ) # ASSERT 2: Überprüfe, ob die App-Logik die Daten korrekt verarbeitet hat assert isinstance(plot_df, pd.DataFrame) assert len(plot_df) == 5 assert "State Change (Delta)" in plot_df.columns