66 lines
2.2 KiB
Python
66 lines
2.2 KiB
Python
"""Mock devices object to test Insteon."""
|
|
from pyinsteon.address import Address
|
|
from pyinsteon.device_types import (
|
|
GeneralController_MiniRemote_4,
|
|
Hub,
|
|
SwitchedLightingControl_SwitchLinc,
|
|
)
|
|
|
|
from tests.async_mock import AsyncMock, MagicMock
|
|
|
|
|
|
class MockSwitchLinc(SwitchedLightingControl_SwitchLinc):
|
|
"""Mock SwitchLinc device."""
|
|
|
|
@property
|
|
def operating_flags(self):
|
|
"""Return no operating flags to force properties to be checked."""
|
|
return {}
|
|
|
|
|
|
class MockDevices:
|
|
"""Mock devices class."""
|
|
|
|
def __init__(self, connected=True):
|
|
"""Init the MockDevices class."""
|
|
self._devices = {}
|
|
self.modem = None
|
|
self._connected = connected
|
|
self.async_save = AsyncMock()
|
|
self.add_x10_device = MagicMock()
|
|
self.set_id = MagicMock()
|
|
|
|
def __getitem__(self, address):
|
|
"""Return a a device from the device address."""
|
|
return self._devices.get(address)
|
|
|
|
def __iter__(self):
|
|
"""Return an iterator of device addresses."""
|
|
yield from self._devices
|
|
|
|
def __len__(self):
|
|
"""Return the number of devices."""
|
|
return len(self._devices)
|
|
|
|
def get(self, address):
|
|
"""Return a device from an address or None if not found."""
|
|
return self._devices.get(Address(address))
|
|
|
|
async def async_load(self, *args, **kwargs):
|
|
"""Load the mock devices."""
|
|
if self._connected:
|
|
addr0 = Address("AA.AA.AA")
|
|
addr1 = Address("11.11.11")
|
|
addr2 = Address("22.22.22")
|
|
addr3 = Address("33.33.33")
|
|
self._devices[addr0] = Hub(addr0)
|
|
self._devices[addr1] = MockSwitchLinc(addr1, 0x02, 0x00)
|
|
self._devices[addr2] = GeneralController_MiniRemote_4(addr2, 0x00, 0x00)
|
|
self._devices[addr3] = SwitchedLightingControl_SwitchLinc(addr3, 0x02, 0x00)
|
|
for device in [self._devices[addr] for addr in [addr1, addr2, addr3]]:
|
|
device.async_read_config = AsyncMock()
|
|
for device in [self._devices[addr] for addr in [addr2, addr3]]:
|
|
device.async_status = AsyncMock()
|
|
self._devices[addr1].async_status = AsyncMock(side_effect=AttributeError)
|
|
self.modem = self._devices[addr0]
|