test_siren.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. """Tests for the siren entity."""
  2. from unittest.mock import AsyncMock, Mock
  3. import pytest
  4. from pytest_homeassistant_custom_component.common import MockConfigEntry
  5. from custom_components.tuya_local.const import (
  6. CONF_DEVICE_ID,
  7. CONF_PROTOCOL_VERSION,
  8. CONF_TYPE,
  9. DOMAIN,
  10. )
  11. from custom_components.tuya_local.siren import TuyaLocalSiren, async_setup_entry
  12. @pytest.mark.asyncio
  13. async def test_init_entry(hass):
  14. """Test initialisation"""
  15. entry = MockConfigEntry(
  16. domain=DOMAIN,
  17. data={
  18. CONF_TYPE: "orion_outdoor_siren",
  19. CONF_DEVICE_ID: "dummy",
  20. CONF_PROTOCOL_VERSION: "auto",
  21. },
  22. )
  23. m_add_entities = Mock()
  24. m_device = AsyncMock()
  25. hass.data[DOMAIN] = {"dummy": {"device": m_device}}
  26. await async_setup_entry(hass, entry, m_add_entities)
  27. assert type(hass.data[DOMAIN]["dummy"]["siren"]) is TuyaLocalSiren
  28. m_add_entities.assert_called_once()
  29. @pytest.mark.asyncio
  30. async def test_init_entry_fails_if_device_has_no_siren(hass):
  31. """Test initialisation when device as no matching entity"""
  32. entry = MockConfigEntry(
  33. domain=DOMAIN,
  34. data={
  35. CONF_TYPE: "simple_switch",
  36. CONF_DEVICE_ID: "dummy",
  37. CONF_PROTOCOL_VERSION: "auto",
  38. },
  39. )
  40. m_add_entities = Mock()
  41. m_device = AsyncMock()
  42. hass.data[DOMAIN] = {"dummy": {"device": m_device}}
  43. try:
  44. await async_setup_entry(hass, entry, m_add_entities)
  45. assert False
  46. except ValueError:
  47. pass
  48. m_add_entities.assert_not_called()
  49. @pytest.mark.asyncio
  50. async def test_init_entry_fails_if_config_is_missing(hass):
  51. """Test initialisation when config does not exist"""
  52. entry = MockConfigEntry(
  53. domain=DOMAIN,
  54. data={
  55. CONF_TYPE: "non_existing",
  56. CONF_DEVICE_ID: "dummy",
  57. CONF_PROTOCOL_VERSION: "auto",
  58. },
  59. )
  60. m_add_entities = Mock()
  61. m_device = AsyncMock()
  62. hass.data[DOMAIN] = {"dummy": {"device": m_device}}
  63. try:
  64. await async_setup_entry(hass, entry, m_add_entities)
  65. assert False
  66. except ValueError:
  67. pass
  68. m_add_entities.assert_not_called()