| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- from contextlib import asynccontextmanager
- from unittest.mock import AsyncMock
- from custom_components.tuya_local.device import TuyaLocalDevice
- @asynccontextmanager
- async def assert_device_properties_set(device: TuyaLocalDevice, properties: dict):
- results = []
- def generate_result(*args):
- result = AsyncMock()
- results.append(result)
- return result()
- device.async_set_property.side_effect = generate_result
- try:
- yield
- finally:
- assert device.async_set_property.call_count == len(properties.keys())
- for key in properties.keys():
- device.async_set_property.assert_any_call(key, properties[key])
- for result in results:
- result.assert_awaited()
- @asynccontextmanager
- async def assert_device_properties_set_optional(
- device: TuyaLocalDevice, properties: dict, optional_properties: dict,
- ):
- results = []
- def generate_result(*args):
- result = AsyncMock()
- results.append(result)
- return result()
- device.async_set_property.side_effect = generate_result
- try:
- yield
- finally:
- assert (device.async_set_property.call_count >= len(properties.keys())) and (
- device.async_set_property.call_count
- <= len(properties.keys()) + len(optional_properties.keys())
- )
- for key in properties.keys():
- device.async_set_property.assert_any_call(key, properties[key])
- for result in results:
- result.assert_awaited()
|