test_blitzwolf_bsh2_humidifier.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from homeassistant.components.fan import FanEntityFeature
  2. from ..const import BLITZWOLF_BWSH2_PAYLOAD
  3. from ..helpers import assert_device_properties_set
  4. from ..mixins.select import MultiSelectTests
  5. from .base_device_tests import TuyaDeviceTestCase
  6. SWITCH_DP = "1"
  7. SPEED_DP = "3"
  8. LIGHT_DP = "6"
  9. TIMER_DP = "19"
  10. class TestBlitzwolfSH2Humidifier(MultiSelectTests, TuyaDeviceTestCase):
  11. __test__ = True
  12. def setUp(self):
  13. self.setUpForConfig(
  14. "blitzwolf_bwsh2_humidifier.yaml",
  15. BLITZWOLF_BWSH2_PAYLOAD,
  16. )
  17. self.subject = self.entities.get("fan")
  18. self.setUpMultiSelect(
  19. [
  20. {
  21. "name": "select_light",
  22. "dps": LIGHT_DP,
  23. "options": {
  24. "close": "Off",
  25. "purple": "Purple",
  26. "blue": "Blue",
  27. "cyan": "Cyan",
  28. "green": "Green",
  29. "yellow": "Yellow",
  30. "orange": "Orange",
  31. "red": "Red",
  32. "colour": "Colorful",
  33. },
  34. },
  35. {
  36. "name": "select_timer",
  37. "dps": TIMER_DP,
  38. "options": {
  39. "cancel": "Off",
  40. "2h": "2 hours",
  41. "4h": "4 hours",
  42. "6h": "6 hours",
  43. "8h": "8 hours",
  44. "10h": "10 hours",
  45. "12h": "12 hours",
  46. },
  47. },
  48. ]
  49. )
  50. self.mark_secondary(["select_light", "select_timer"])
  51. def test_supported_features(self):
  52. self.assertEqual(
  53. self.subject.supported_features,
  54. FanEntityFeature.SET_SPEED,
  55. )
  56. def test_speed(self):
  57. self.dps[SPEED_DP] = "sleep"
  58. self.assertEqual(self.subject.percentage, 10)
  59. self.dps[SPEED_DP] = "grade1"
  60. self.assertEqual(self.subject.percentage, 25)
  61. self.dps[SPEED_DP] = "grade2"
  62. self.assertEqual(self.subject.percentage, 40)
  63. self.dps[SPEED_DP] = "grade3"
  64. self.assertEqual(self.subject.percentage, 55)
  65. self.dps[SPEED_DP] = "grade4"
  66. self.assertEqual(self.subject.percentage, 70)
  67. self.dps[SPEED_DP] = "grade5"
  68. self.assertEqual(self.subject.percentage, 85)
  69. self.dps[SPEED_DP] = "grade6"
  70. self.assertEqual(self.subject.percentage, 100)
  71. async def test_set_speed_snaps(self):
  72. async with assert_device_properties_set(
  73. self.subject._device,
  74. {SPEED_DP: "grade3"},
  75. ):
  76. await self.subject.async_set_percentage(50)