helpers.py 741 B

12345678910111213141516171819202122232425
  1. from contextlib import asynccontextmanager
  2. from unittest.mock import AsyncMock
  3. from custom_components.tuya_local.device import TuyaLocalDevice
  4. @asynccontextmanager
  5. async def assert_device_properties_set(device: TuyaLocalDevice, properties: dict):
  6. results = []
  7. def generate_result(*args):
  8. result = AsyncMock()
  9. results.append(result)
  10. return result()
  11. device.async_set_property.side_effect = generate_result
  12. try:
  13. yield
  14. finally:
  15. assert device.async_set_property.call_count == len(properties.keys())
  16. for key in properties.keys():
  17. device.async_set_property.assert_any_call(key, properties[key])
  18. for result in results:
  19. result.assert_awaited()