Send initial message for certain zwave_js ws subscriptions (#71723)

* Send initial message for certain zwave_js ws subscriptions

* Be consistent

* fix tests and bugs
This commit is contained in:
Raman Gupta 2022-05-12 03:07:11 -04:00 committed by GitHub
parent ca52aa47aa
commit 0d69adb404
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 54 additions and 9 deletions

View file

@ -1848,9 +1848,17 @@ async def websocket_subscribe_firmware_update_status(
connection.subscriptions[msg["id"]] = async_cleanup connection.subscriptions[msg["id"]] = async_cleanup
progress = node.firmware_update_progress progress = node.firmware_update_progress
connection.send_result( connection.send_result(msg[ID])
msg[ID], _get_firmware_update_progress_dict(progress) if progress else None if progress:
) connection.send_message(
websocket_api.event_message(
msg[ID],
{
"event": "firmware update progress",
**_get_firmware_update_progress_dict(progress),
},
)
)
class FirmwareUploadView(HomeAssistantView): class FirmwareUploadView(HomeAssistantView):
@ -2011,8 +2019,16 @@ async def websocket_subscribe_controller_statistics(
] ]
connection.subscriptions[msg["id"]] = async_cleanup connection.subscriptions[msg["id"]] = async_cleanup
connection.send_result( connection.send_result(msg[ID])
msg[ID], _get_controller_statistics_dict(controller.statistics) connection.send_message(
websocket_api.event_message(
msg[ID],
{
"event": "statistics updated",
"source": "controller",
**_get_controller_statistics_dict(controller.statistics),
},
)
) )
@ -2069,7 +2085,18 @@ async def websocket_subscribe_node_statistics(
msg[DATA_UNSUBSCRIBE] = unsubs = [node.on("statistics updated", forward_stats)] msg[DATA_UNSUBSCRIBE] = unsubs = [node.on("statistics updated", forward_stats)]
connection.subscriptions[msg["id"]] = async_cleanup connection.subscriptions[msg["id"]] = async_cleanup
connection.send_result(msg[ID], _get_node_statistics_dict(node.statistics)) connection.send_result(msg[ID])
connection.send_message(
websocket_api.event_message(
msg[ID],
{
"event": "statistics updated",
"source": "node",
"nodeId": node.node_id,
**_get_node_statistics_dict(node.statistics),
},
)
)
@websocket_api.require_admin @websocket_api.require_admin

View file

@ -3479,7 +3479,14 @@ async def test_subscribe_firmware_update_status_initial_value(
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
assert msg["success"] assert msg["success"]
assert msg["result"] == {"sent_fragments": 1, "total_fragments": 10} assert msg["result"] is None
msg = await ws_client.receive_json()
assert msg["event"] == {
"event": "firmware update progress",
"sent_fragments": 1,
"total_fragments": 10,
}
async def test_subscribe_firmware_update_status_failures( async def test_subscribe_firmware_update_status_failures(
@ -3688,7 +3695,12 @@ async def test_subscribe_controller_statistics(
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
assert msg["success"] assert msg["success"]
assert msg["result"] == { assert msg["result"] is None
msg = await ws_client.receive_json()
assert msg["event"] == {
"event": "statistics updated",
"source": "controller",
"messages_tx": 0, "messages_tx": 0,
"messages_rx": 0, "messages_rx": 0,
"messages_dropped_tx": 0, "messages_dropped_tx": 0,
@ -3783,7 +3795,13 @@ async def test_subscribe_node_statistics(
msg = await ws_client.receive_json() msg = await ws_client.receive_json()
assert msg["success"] assert msg["success"]
assert msg["result"] == { assert msg["result"] is None
msg = await ws_client.receive_json()
assert msg["event"] == {
"source": "node",
"event": "statistics updated",
"nodeId": multisensor_6.node_id,
"commands_tx": 0, "commands_tx": 0,
"commands_rx": 0, "commands_rx": 0,
"commands_dropped_tx": 0, "commands_dropped_tx": 0,