Problem
Aktuell instanziiert die CLI in den buchen/ausgang/storno-Kommandos einen CollmexClient bevor auf --dry-run verzweigt wird. CollmexClient.__init__ (collmex/api.py:194) ruft load_dotenv() auf und validiert die vier Pflicht-Env-Variablen — sonst CollmexError("COLLMEX_URL nicht konfiguriert").
Folge: Dry-Run funktioniert nur, wenn eine gültige .env vorhanden ist, obwohl gar kein API-Call stattfindet.
Symptom
In CI sind die Dry-Run-Tests nur deshalb grün, weil tests/conftest.py::_fake_collmex_env per monkeypatch.setenv Dummy-Werte injiziert (Fix in 3b2346f). Das ist ein Workaround, kein sauberes Design.
Vorschlag
Client lazy erzeugen:
- Dry-Run-Branch zuerst prüfen, Booking rein lokal bauen und ausgeben.
CollmexClient() nur im Nicht-Dry-Run-Pfad instanziieren.
- Alternativ:
CollmexClient.__init__ macht nur load_dotenv, Validierung wandert in eine separate Methode _validate_credentials() oder in die erste echte Request-Methode.
Gewinn
- Dry-Run funktioniert ohne Credentials (sinnvoll für Evaluation/Demos).
- Autouse-Fixture in
conftest.py kann wieder weg oder reduziert werden.
- Besseres Separation-of-Concerns.
Betroffene Stellen
collmex/cli.py (Kommandos buchen, ausgang, storno)
collmex/api.py:194-220
tests/conftest.py::_fake_collmex_env
Problem
Aktuell instanziiert die CLI in den
buchen/ausgang/storno-Kommandos einenCollmexClientbevor auf--dry-runverzweigt wird.CollmexClient.__init__(collmex/api.py:194) ruftload_dotenv()auf und validiert die vier Pflicht-Env-Variablen — sonstCollmexError("COLLMEX_URL nicht konfiguriert").Folge: Dry-Run funktioniert nur, wenn eine gültige
.envvorhanden ist, obwohl gar kein API-Call stattfindet.Symptom
In CI sind die Dry-Run-Tests nur deshalb grün, weil
tests/conftest.py::_fake_collmex_envpermonkeypatch.setenvDummy-Werte injiziert (Fix in3b2346f). Das ist ein Workaround, kein sauberes Design.Vorschlag
Client lazy erzeugen:
CollmexClient()nur im Nicht-Dry-Run-Pfad instanziieren.CollmexClient.__init__macht nurload_dotenv, Validierung wandert in eine separate Methode_validate_credentials()oder in die erste echte Request-Methode.Gewinn
conftest.pykann wieder weg oder reduziert werden.Betroffene Stellen
collmex/cli.py(Kommandosbuchen,ausgang,storno)collmex/api.py:194-220tests/conftest.py::_fake_collmex_env