Spaces:
Sleeping
Sleeping
| 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 | |