Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions test/model/test_node.py
Original file line number Diff line number Diff line change
Expand Up @@ -2786,3 +2786,17 @@ async def test_supervision_result_invalid(

with pytest.raises(ValueError):
await node.async_set_raw_config_parameter_value(1, 1)


async def test_node_info_received_event(multisensor_6: node_pkg.Node):
"""Test that the node info received event is successfully validated by pydantic."""
node = multisensor_6
event_type = "node info received"
event_data = {"source": "node", "event": event_type, "nodeId": node.node_id}
event = Event(event_type, event_data)

def callback(data: dict) -> None:
assert data == event_data

node.on(event_type, callback)
node.receive_event(event)
4 changes: 4 additions & 0 deletions zwave_js_server/model/node/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1123,6 +1123,10 @@ def handle_notification(self, event: Event) -> None:
"Unhandled notification command class: %s", command_class.name
)

def handle_node_info_received(self, event: Event) -> None:
"""Process a node info received event."""
# Nothing to do for now

def handle_firmware_update_progress(self, event: Event) -> None:
"""Process a node firmware update progress event."""
self._firmware_update_progress = event.data["firmware_update_progress"] = (
Expand Down
7 changes: 7 additions & 0 deletions zwave_js_server/model/node/event_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,12 @@ class DeadEventModel(BaseNodeEventModel):
event: Literal["dead"]


class NodeInfoReceivedEventModel(BaseNodeEventModel):
"""Model for `node info received` event data."""

event: Literal["node info received"]


class InterviewCompletedEventModel(BaseNodeEventModel):
"""Model for `interview completed` event data."""

Expand Down Expand Up @@ -344,6 +350,7 @@ def from_dict(cls, data: dict) -> FirmwareUpdateProgressEventModel:
"interview stage completed": InterviewStageCompletedEventModel,
"interview started": InterviewStartedEventModel,
"metadata updated": MetadataUpdatedEventModel,
"node info received": NodeInfoReceivedEventModel,
"notification": NotificationEventModel,
"ready": ReadyEventModel,
"sleep": SleepEventModel,
Expand Down