4
0

test_datetime.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. """Tests for the datetime 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.datetime import TuyaLocalDateTime, async_setup_entry
  12. @pytest.mark.asyncio
  13. async def test_init_entry(hass):
  14. """Test the initialisation."""
  15. entry = MockConfigEntry(
  16. domain=DOMAIN,
  17. data={
  18. CONF_TYPE: "elko_cfmtb_thermostat",
  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] = {
  26. "dummy": {"device": m_device},
  27. }
  28. await async_setup_entry(hass, entry, m_add_entities)
  29. assert (
  30. type(hass.data[DOMAIN]["dummy"]["datetime_override_end"]) is TuyaLocalDateTime
  31. )
  32. m_add_entities.assert_called()
  33. @pytest.mark.asyncio
  34. async def test_init_entry_fails_if_device_has_no_time(hass):
  35. """Test initialisation when device has no matching entity"""
  36. entry = MockConfigEntry(
  37. domain=DOMAIN,
  38. data={
  39. CONF_TYPE: "simple_switch",
  40. CONF_DEVICE_ID: "dummy",
  41. CONF_PROTOCOL_VERSION: "auto",
  42. },
  43. )
  44. m_add_entities = Mock()
  45. m_device = AsyncMock()
  46. hass.data[DOMAIN] = {
  47. "dummy": {"device": m_device},
  48. }
  49. try:
  50. await async_setup_entry(hass, entry, m_add_entities)
  51. assert False
  52. except ValueError:
  53. pass
  54. m_add_entities.assert_not_called()
  55. @pytest.mark.asyncio
  56. async def test_init_entry_fails_if_config_is_missing(hass):
  57. """Test initialisation when device has no matching entity"""
  58. entry = MockConfigEntry(
  59. domain=DOMAIN,
  60. data={
  61. CONF_TYPE: "non_existing",
  62. CONF_DEVICE_ID: "dummy",
  63. CONF_PROTOCOL_VERSION: "auto",
  64. },
  65. )
  66. m_add_entities = Mock()
  67. m_device = AsyncMock()
  68. hass.data[DOMAIN] = {
  69. "dummy": {"device": m_device},
  70. }
  71. try:
  72. await async_setup_entry(hass, entry, m_add_entities)
  73. assert False
  74. except ValueError:
  75. pass
  76. m_add_entities.assert_not_called()