File size: 1,686 Bytes
a345062
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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