test_select.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. """Tests for the select entity."""
  2. from pytest_homeassistant_custom_component.common import MockConfigEntry
  3. from unittest.mock import AsyncMock, Mock
  4. from custom_components.tuya_local.const import (
  5. CONF_DEVICE_ID,
  6. CONF_TYPE,
  7. DOMAIN,
  8. )
  9. from custom_components.tuya_local.generic.select import TuyaLocalSelect
  10. from custom_components.tuya_local.select import async_setup_entry
  11. async def test_init_entry(hass):
  12. """Test the initialisation."""
  13. entry = MockConfigEntry(
  14. domain=DOMAIN,
  15. data={
  16. CONF_TYPE: "arlec_fan",
  17. CONF_DEVICE_ID: "dummy",
  18. "fan": False,
  19. "select_timer": True,
  20. },
  21. )
  22. m_add_entities = Mock()
  23. m_device = AsyncMock()
  24. hass.data[DOMAIN] = {
  25. "dummy": {"device": m_device},
  26. }
  27. await async_setup_entry(hass, entry, m_add_entities)
  28. assert type(hass.data[DOMAIN]["dummy"]["select_timer"]) == TuyaLocalSelect
  29. m_add_entities.assert_called_once()
  30. async def test_init_entry_fails_if_device_has_no_select(hass):
  31. """Test initialisation when device has no matching entity"""
  32. entry = MockConfigEntry(
  33. domain=DOMAIN,
  34. data={CONF_TYPE: "simple_switch", CONF_DEVICE_ID: "dummy", "select": True},
  35. )
  36. m_add_entities = Mock()
  37. m_device = AsyncMock()
  38. hass.data[DOMAIN] = {
  39. "dummy": {"device": m_device},
  40. }
  41. try:
  42. await async_setup_entry(hass, entry, m_add_entities)
  43. assert False
  44. except ValueError:
  45. pass
  46. m_add_entities.assert_not_called()
  47. async def test_init_entry_fails_if_config_is_missing(hass):
  48. """Test initialisation when device has no matching entity"""
  49. entry = MockConfigEntry(
  50. domain=DOMAIN,
  51. data={CONF_TYPE: "non_existing", CONF_DEVICE_ID: "dummy", "select": True},
  52. )
  53. m_add_entities = Mock()
  54. m_device = AsyncMock()
  55. hass.data[DOMAIN] = {
  56. "dummy": {"device": m_device},
  57. }
  58. try:
  59. await async_setup_entry(hass, entry, m_add_entities)
  60. assert False
  61. except ValueError:
  62. pass
  63. m_add_entities.assert_not_called()