homelab: eigener Live-Strom (keine Getrennt-Anzeige mehr), Hinweise des Homelab-Waechters auf der Seite, Verbindungsanzeige je Instanz
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
83c33584e4
commit
160381d8b3
@@ -297,3 +297,40 @@ def test_eigener_container_erscheint_nicht(daten):
|
||||
"etiketten": ["mc2"], "erlaubt": False, "ip": "192.168.178.31"})
|
||||
kanal.bericht_speichern(bericht)
|
||||
assert "ct-107" not in {z["id"] for z in inventar.ziele()["ziele"]}
|
||||
|
||||
|
||||
def test_strom_stoesst_bei_aenderung_an_und_meldet_sich(daten):
|
||||
import asyncio
|
||||
|
||||
from routers import homelab as homelab_router
|
||||
|
||||
class Anfrage:
|
||||
def __init__(self):
|
||||
self.runden = 0
|
||||
|
||||
async def is_disconnected(self):
|
||||
self.runden += 1
|
||||
return self.runden > 4
|
||||
|
||||
async def lesen() -> list[str]:
|
||||
teile = []
|
||||
async for teil in homelab_router._strom(Anfrage(), takt_s=0.01, lebenszeichen_takte=2):
|
||||
teile.append(teil)
|
||||
if len(teile) == 1:
|
||||
kanal.bericht_speichern(BERICHT) # ein neuer Bericht → Anstoß „homelab“
|
||||
return teile
|
||||
|
||||
teile = asyncio.run(lesen())
|
||||
assert teile[0] == ": verbunden\n\n"
|
||||
assert teile[1] == 'event: invalidate\ndata: {"keys": ["homelab"]}\n\n'
|
||||
assert 'event: invalidate\ndata: {"keys": []}\n\n' in teile[2:] # Lebenszeichen
|
||||
|
||||
|
||||
def test_hinweise_des_homelab_waechters(daten, monkeypatch):
|
||||
from services import waechter
|
||||
monkeypatch.setattr(waechter, "STORE_PATH", daten / "mc2-waechter.json")
|
||||
(daten / "mc2-waechter.json").write_text(json.dumps({"hinweise": {"gast:ct-104": {
|
||||
"id": "gast:ct-104", "stufe": "rot", "titel": "Gitea antwortet nicht", "text": "…", "seit": 1}}}),
|
||||
encoding="utf-8")
|
||||
antwort = _client().get("/api/homelab/hinweise").json()
|
||||
assert [h["titel"] for h in antwort["hinweise"]] == ["Gitea antwortet nicht"]
|
||||
|
||||
Reference in New Issue
Block a user