test_treatlife_ds02f.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from homeassistant.components.fan import FanEntityFeature
  2. from homeassistant.const import UnitOfTime
  3. from ..const import TREATLIFE_DS02F_PAYLOAD
  4. from ..helpers import assert_device_properties_set
  5. from ..mixins.number import BasicNumberTests
  6. from ..mixins.switch import SwitchableTests
  7. from .base_device_tests import TuyaDeviceTestCase
  8. SWITCH_DPS = "1"
  9. TIMER_DPS = "2"
  10. SPEED_DPS = "3"
  11. class TestTreatlifeFan(SwitchableTests, BasicNumberTests, TuyaDeviceTestCase):
  12. __test__ = True
  13. def setUp(self):
  14. self.setUpForConfig("treatlife_ds02_fan.yaml", TREATLIFE_DS02F_PAYLOAD)
  15. self.subject = self.entities["fan"]
  16. self.setUpSwitchable(SWITCH_DPS, self.subject)
  17. self.setUpBasicNumber(
  18. TIMER_DPS,
  19. self.entities.get("number_timer"),
  20. max=1440.0,
  21. scale=60,
  22. unit=UnitOfTime.MINUTES,
  23. )
  24. self.mark_secondary(["number_timer"])
  25. def test_supported_features(self):
  26. self.assertEqual(
  27. self.subject.supported_features,
  28. FanEntityFeature.SET_SPEED,
  29. )
  30. def test_speed(self):
  31. self.dps[SPEED_DPS] = "level_2"
  32. self.assertEqual(self.subject.percentage, 50)
  33. def test_speed_step(self):
  34. self.assertEqual(self.subject.percentage_step, 25)
  35. self.assertEqual(self.subject.speed_count, 4)
  36. async def test_set_speed(self):
  37. async with assert_device_properties_set(
  38. self.subject._device, {SPEED_DPS: "level_3"}
  39. ):
  40. await self.subject.async_set_percentage(75)
  41. async def test_set_speed_snaps(self):
  42. async with assert_device_properties_set(
  43. self.subject._device, {SPEED_DPS: "level_1"}
  44. ):
  45. await self.subject.async_set_percentage(30)