test_vork_vk6067aw_purifier.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. from homeassistant.components.binary_sensor import BinarySensorDeviceClass
  2. from homeassistant.components.button import ButtonDeviceClass
  3. from homeassistant.components.fan import FanEntityFeature
  4. from homeassistant.components.sensor import SensorDeviceClass
  5. from homeassistant.const import PERCENTAGE, UnitOfTime
  6. from ..const import VORK_VK6067_PURIFIER_PAYLOAD
  7. from ..helpers import assert_device_properties_set
  8. from ..mixins.binary_sensor import BasicBinarySensorTests
  9. from ..mixins.button import BasicButtonTests
  10. from ..mixins.light import BasicLightTests
  11. from ..mixins.select import BasicSelectTests
  12. from ..mixins.sensor import MultiSensorTests
  13. from ..mixins.switch import SwitchableTests
  14. from .base_device_tests import TuyaDeviceTestCase
  15. SWITCH_DPS = "1"
  16. MODE_DPS = "4"
  17. FILTER_DPS = "5"
  18. LIGHT_DPS = "8"
  19. RESET_DPS = "11"
  20. TIMER_DPS = "18"
  21. COUNTDOWN_DPS = "19"
  22. AQI_DPS = "21"
  23. ERROR_DPS = "22"
  24. class TestVorkVK6267AWPurifier(
  25. BasicBinarySensorTests,
  26. BasicButtonTests,
  27. BasicLightTests,
  28. BasicSelectTests,
  29. MultiSensorTests,
  30. SwitchableTests,
  31. TuyaDeviceTestCase,
  32. ):
  33. __test__ = True
  34. def setUp(self):
  35. self.setUpForConfig("vork_vk6067aw_purifier.yaml", VORK_VK6067_PURIFIER_PAYLOAD)
  36. self.subject = self.entities["fan"]
  37. self.setUpSwitchable(SWITCH_DPS, self.subject)
  38. self.setUpBasicBinarySensor(
  39. ERROR_DPS,
  40. self.entities.get("binary_sensor_problem"),
  41. device_class=BinarySensorDeviceClass.PROBLEM,
  42. testdata=(1, 0),
  43. )
  44. self.setUpBasicLight(LIGHT_DPS, self.entities.get("light"))
  45. self.setUpBasicSelect(
  46. TIMER_DPS,
  47. self.entities.get("select_timer"),
  48. {
  49. "cancel": "off",
  50. "1h": "1 hour",
  51. "2h": "2 hours",
  52. },
  53. )
  54. self.setUpBasicButton(
  55. RESET_DPS,
  56. self.entities.get("button_filter_reset"),
  57. device_class=ButtonDeviceClass.RESTART,
  58. )
  59. self.setUpMultiSensors(
  60. [
  61. {
  62. "dps": AQI_DPS,
  63. "name": "sensor_air_quality",
  64. "device_class": SensorDeviceClass.ENUM,
  65. "testdata": ("great", "Great"),
  66. "options": ["Great", "Good", "Severe", "Medium"],
  67. },
  68. {
  69. "dps": COUNTDOWN_DPS,
  70. "name": "sensor_time_remaining",
  71. "unit": UnitOfTime.MINUTES,
  72. "device_class": SensorDeviceClass.DURATION,
  73. },
  74. {
  75. "dps": FILTER_DPS,
  76. "name": "sensor_filter",
  77. "unit": PERCENTAGE,
  78. },
  79. ]
  80. )
  81. self.mark_secondary(
  82. [
  83. "binary_sensor_problem",
  84. "button_filter_reset",
  85. "light",
  86. "select_timer",
  87. "sensor_air_quality",
  88. "sensor_filter",
  89. "sensor_time_remaining",
  90. ]
  91. )
  92. def test_supported_features(self):
  93. self.assertEqual(
  94. self.subject.supported_features,
  95. FanEntityFeature.PRESET_MODE,
  96. )
  97. def test_preset_modes(self):
  98. self.assertCountEqual(
  99. self.subject.preset_modes,
  100. ["nature", "fresh", "strong", "smart", "sleep"],
  101. )
  102. def test_preset_mode(self):
  103. self.dps[MODE_DPS] = "low"
  104. self.assertEqual(self.subject.preset_mode, "nature")
  105. self.dps[MODE_DPS] = "mid"
  106. self.assertEqual(self.subject.preset_mode, "fresh")
  107. self.dps[MODE_DPS] = "high"
  108. self.assertEqual(self.subject.preset_mode, "strong")
  109. self.dps[MODE_DPS] = "auto"
  110. self.assertEqual(self.subject.preset_mode, "smart")
  111. self.dps[MODE_DPS] = "sleep"
  112. self.assertEqual(self.subject.preset_mode, "sleep")
  113. async def test_set_preset_to_low(self):
  114. async with assert_device_properties_set(
  115. self.subject._device,
  116. {MODE_DPS: "low"},
  117. ):
  118. await self.subject.async_set_preset_mode("nature")
  119. async def test_set_preset_to_auto(self):
  120. async with assert_device_properties_set(
  121. self.subject._device,
  122. {MODE_DPS: "auto"},
  123. ):
  124. await self.subject.async_set_preset_mode("smart")
  125. async def test_set_preset_to_sleep(self):
  126. async with assert_device_properties_set(
  127. self.subject._device,
  128. {MODE_DPS: "sleep"},
  129. ):
  130. await self.subject.async_set_preset_mode("sleep")