Web-Quellen: An/Aus-Schalter pro Quelle im UI + Einzel-Quellen-Sync

This commit is contained in:
Flo Hartmann
2026-08-25 01:10:36 +00:00
parent 8b38bc6c89
commit 667196a4ba
5 changed files with 176 additions and 14 deletions

View File

@@ -653,6 +653,46 @@ def test_env_schalter_deaktiviert_einzelne_quelle(session_factory, monkeypatch):
assert quelle_aktiv("brettspielbox") is True # Standard „1“
def test_ui_schalter_uebersteuert_env(session_factory, monkeypatch):
"""Der DB-Schalter schaltet eine per Env aktive Quelle ab (und umgekehrt)."""
monkeypatch.delenv("SPIELE_NEUHEITEN_QUELLE_SPIELBOX_AKTIV", raising=False)
spielbox = StatischerAdapter("spielbox", [QuellenTreffer(titel="X", quellen_url="u")])
service = _service(session_factory, (spielbox,))
# Standard: an
assert service.quelle_laeuft("spielbox") is True
# Schalter „aus“ → Sync überspringt die Quelle
service.schalter_gesetzt("spielbox", False)
assert service.quelle_laeuft("spielbox") is False
zeilen = service.laufe()
assert zeilen[0].aktiv is False and zeilen[0].neu == 0
# Schalter „an“ → läuft wieder
service.schalter_gesetzt("spielbox", True)
assert service.quelle_laeuft("spielbox") is True
zeilen = service.laufe()
assert zeilen[0].aktiv is True and zeilen[0].neu == 1
def test_einzellauf_ignoriert_schalter(session_factory, monkeypatch):
"""`laufе(nur_quellen=…)` läuft auch bei ausgeschalteter Quelle."""
monkeypatch.delenv("SPIELE_NEUHEITEN_QUELLE_SPIELBOX_AKTIV", raising=False)
spielbox = StatischerAdapter("spielbox", [QuellenTreffer(titel="X", quellen_url="u")])
andere = StatischerAdapter("cliquenabend", [QuellenTreffer(titel="Y", quellen_url="u")])
service = _service(session_factory, (spielbox, andere))
service.schalter_gesetzt("spielbox", False)
zeilen = service.laufe(nur_quellen={"spielbox"})
assert len(zeilen) == 1
assert zeilen[0].quelle == "spielbox"
assert zeilen[0].aktiv is True
assert zeilen[0].neu == 1
def test_validatoren_werden_persistiert_und_wieder_verwendet(session_factory):
"""304-Behandlung über Läufe hinweg: ETag wird gespeichert und gesendet."""
import tests._neuheiten as h