test_vork_vk6067aw_purifier.py 4.6 KB

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