Add interview feedback for Z-Wave JS add node websocket (#50384)
* Add interview feedback for add node websocket * cleanup leftover logging * add tests * test interview failed event * fix event type * include manufacturer & model from device registry * update testpull/50618/head
parent
f5c31b89f8
commit
f33b45ec82
|
@ -239,9 +239,24 @@ async def websocket_add_node(
|
|||
websocket_api.event_message(msg[ID], {"event": event["event"]})
|
||||
)
|
||||
|
||||
@callback
|
||||
def forward_stage(event: dict) -> None:
|
||||
connection.send_message(
|
||||
websocket_api.event_message(
|
||||
msg[ID], {"event": event["event"], "stage": event["stageName"]}
|
||||
)
|
||||
)
|
||||
|
||||
@callback
|
||||
def node_added(event: dict) -> None:
|
||||
node = event["node"]
|
||||
interview_unsubs = [
|
||||
node.on("interview started", forward_event),
|
||||
node.on("interview completed", forward_event),
|
||||
node.on("interview stage completed", forward_stage),
|
||||
node.on("interview failed", forward_event),
|
||||
]
|
||||
unsubs.extend(interview_unsubs)
|
||||
node_details = {
|
||||
"node_id": node.node_id,
|
||||
"status": node.status,
|
||||
|
@ -255,7 +270,12 @@ async def websocket_add_node(
|
|||
|
||||
@callback
|
||||
def device_registered(device: DeviceEntry) -> None:
|
||||
device_details = {"name": device.name, "id": device.id}
|
||||
device_details = {
|
||||
"name": device.name,
|
||||
"id": device.id,
|
||||
"manufacturer": device.manufacturer,
|
||||
"model": device.model,
|
||||
}
|
||||
connection.send_message(
|
||||
websocket_api.event_message(
|
||||
msg[ID], {"event": "device registered", "device": device_details}
|
||||
|
|
|
@ -155,7 +155,50 @@ async def test_add_node(
|
|||
msg = await ws_client.receive_json()
|
||||
assert msg["event"]["event"] == "device registered"
|
||||
# Check the keys of the device item
|
||||
assert list(msg["event"]["device"]) == ["name", "id"]
|
||||
assert list(msg["event"]["device"]) == ["name", "id", "manufacturer", "model"]
|
||||
|
||||
# Test receiving interview events
|
||||
event = Event(
|
||||
type="interview started",
|
||||
data={"source": "node", "event": "interview started", "nodeId": 53},
|
||||
)
|
||||
client.driver.receive_event(event)
|
||||
|
||||
msg = await ws_client.receive_json()
|
||||
assert msg["event"]["event"] == "interview started"
|
||||
|
||||
event = Event(
|
||||
type="interview stage completed",
|
||||
data={
|
||||
"source": "node",
|
||||
"event": "interview stage completed",
|
||||
"stageName": "NodeInfo",
|
||||
"nodeId": 53,
|
||||
},
|
||||
)
|
||||
client.driver.receive_event(event)
|
||||
|
||||
msg = await ws_client.receive_json()
|
||||
assert msg["event"]["event"] == "interview stage completed"
|
||||
assert msg["event"]["stage"] == "NodeInfo"
|
||||
|
||||
event = Event(
|
||||
type="interview completed",
|
||||
data={"source": "node", "event": "interview completed", "nodeId": 53},
|
||||
)
|
||||
client.driver.receive_event(event)
|
||||
|
||||
msg = await ws_client.receive_json()
|
||||
assert msg["event"]["event"] == "interview completed"
|
||||
|
||||
event = Event(
|
||||
type="interview failed",
|
||||
data={"source": "node", "event": "interview failed", "nodeId": 53},
|
||||
)
|
||||
client.driver.receive_event(event)
|
||||
|
||||
msg = await ws_client.receive_json()
|
||||
assert msg["event"]["event"] == "interview failed"
|
||||
|
||||
# Test sending command with not loaded entry fails
|
||||
await hass.config_entries.async_unload(entry.entry_id)
|
||||
|
|
Loading…
Reference in New Issue