core/tests/mock/zwave.py

72 lines
1.9 KiB
Python
Raw Normal View History

"""Mock helpers for Z-Wave component."""
from unittest.mock import MagicMock
from pydispatch import dispatcher
SIGNAL_VALUE_CHANGED = 'mock_value_changed'
def value_changed(value):
"""Fire a value changed."""
dispatcher.send(
SIGNAL_VALUE_CHANGED,
value=value,
node=value.node,
network=value.node._network
)
class MockNode(MagicMock):
"""Mock Z-Wave node."""
def __init__(self, *,
node_id='567',
name='Mock Node',
manufacturer_id='ABCD',
product_id='123',
command_classes=None):
"""Initialize a Z-Wave mock node."""
super().__init__()
self.node_id = node_id
self.name = name
self.manufacturer_id = manufacturer_id
self.product_id = product_id
self._command_classes = command_classes or []
def has_command_class(self, command_class):
"""Test if mock has a command class."""
return command_class in self._command_classes
def _get_child_mock(self, **kw):
"""Create child mocks with right MagicMock class."""
return MagicMock(**kw)
class MockValue(MagicMock):
"""Mock Z-Wave value."""
_mock_value_id = 1234
def __init__(self, *,
label='Mock Value',
data=None,
node=None,
instance=0,
index=0,
value_id=None):
"""Initialize a Z-Wave mock value."""
super().__init__()
self.label = label
self.data = data
self.node = node
self.instance = instance
self.index = 0
if value_id is None:
MockValue._mock_value_id += 1
value_id = MockValue._mock_value_id
self.value_id = value_id
def _get_child_mock(self, **kw):
"""Create child mocks with right MagicMock class."""
return MagicMock(**kw)