72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
|
"""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)
|