test_treatlife_ds02f.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. | FanEntityFeature.TURN_ON
  30. | FanEntityFeature.TURN_OFF,
  31. )
  32. def test_speed(self):
  33. self.dps[SPEED_DPS] = "level_2"
  34. self.assertEqual(self.subject.percentage, 50)
  35. def test_speed_step(self):
  36. self.assertEqual(self.subject.percentage_step, 25)
  37. self.assertEqual(self.subject.speed_count, 4)
  38. async def test_set_speed(self):
  39. async with assert_device_properties_set(
  40. self.subject._device, {SPEED_DPS: "level_3"}
  41. ):
  42. await self.subject.async_set_percentage(75)
  43. async def test_set_speed_snaps(self):
  44. async with assert_device_properties_set(
  45. self.subject._device, {SPEED_DPS: "level_1"}
  46. ):
  47. await self.subject.async_set_percentage(30)