Add optional AI generation, MQTT, OAuth refresh and calendar recurrence

This commit is contained in:
Pigway
2026-10-08 23:44:07 +08:00
parent 69a0841868
commit 8209aadbb8
24 changed files with 1113 additions and 37 deletions
+31
View File
@@ -0,0 +1,31 @@
from pigway_frame_flow.models import Power
def test_observer_records_only_changes(service, monkeypatch):
driver = service.registry.get("living-room")
baseline = driver.device()
monkeypatch.setattr(driver, "device", lambda: baseline)
service.device_observer.tick()
before = len(service.db.all("SELECT * FROM events"))
service.device_observer.tick()
assert len(service.db.all("SELECT * FROM events")) == before
changed = baseline.model_copy(
update={"status": "offline", "power": Power(battery_percent=10, charging=False)}
)
monkeypatch.setattr(driver, "device", lambda: changed)
service.device_observer.tick()
assert {r["event_type"] for r in service.db.all("SELECT * FROM events")} >= {
"device.offline",
"device.low_battery",
}
def test_cloud_failure_is_not_device_offline(service, monkeypatch):
driver = service.registry.get("living-room")
def fail():
raise RuntimeError("cloud failure")
monkeypatch.setattr(driver, "device", fail)
service.device_observer.tick()
assert not service.db.all("SELECT * FROM events")