feat: add manual context assignment and fix actuator discovery
Some checks failed
quality / test (3.11) (push) Has been cancelled
quality / test (3.13) (push) Has been cancelled

This commit is contained in:
2026-06-14 23:15:00 +02:00
parent d87d3abc00
commit 09e14689a3
11 changed files with 380 additions and 39 deletions

View File

@@ -179,14 +179,39 @@ def test_actuator_api_configures_reconciles_and_removes(tmp_path: Path) -> None:
assert client.get("/v1/actuators").json() == []
def test_manual_override_endpoint_is_not_exposed(tmp_path: Path) -> None:
def test_manual_assignment_endpoint_updates_context(tmp_path: Path) -> None:
with TestClient(app) as client:
_install_service(tmp_path)
client.post("/v1/actuators", json={"actuator_entity_id": "light.abstellkammer"})
response = client.post(
"/v1/actuators/light.abstellkammer/override",
json={"numeric_entity_id": "sensor.abstellkammer_illuminance"},
"/v1/actuators/light.abstellkammer/assignment",
json={
"numeric_entity_id": "sensor.abstellkammer_illuminance",
"context_entity_ids": ["binary_sensor.abstellkammer_motion"],
"note": "Manuell gesetzt",
},
)
assert response.status_code == 404
assert response.status_code == 200
payload = response.json()
assert payload["assignment"]["source"] == "manual"
assert payload["assignment"]["selected_numeric_entity_id"] == (
"sensor.abstellkammer_illuminance"
)
assert payload["assignment"]["selected_context_entity_ids"] == [
"binary_sensor.abstellkammer_motion"
]
def test_context_options_returns_learnable_entities(tmp_path: Path) -> None:
with TestClient(app) as client:
_install_service(tmp_path)
response = client.get("/v1/actuators/context-options")
assert response.status_code == 200
entity_ids = {item["entity_id"] for item in response.json()}
assert "sensor.abstellkammer_illuminance" in entity_ids
assert "binary_sensor.abstellkammer_motion" in entity_ids
assert "light.abstellkammer" in entity_ids