test_duux_blizzard.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. from homeassistant.components.climate.const import HVACMode
  2. from ..const import DUUX_BLIZZARD_PAYLOAD
  3. from ..mixins.climate import TargetTemperatureTests
  4. from .base_device_tests import TuyaDeviceTestCase
  5. POWER_DP = "1"
  6. MODE_DP = "2"
  7. SPEED_DP = "3"
  8. TIMER_DP = "4"
  9. TEMPERATURE_DP = "5"
  10. SLEEP_DP = "6"
  11. ION_DP = "7"
  12. CURRENTTEMP_DP = "8"
  13. FAULT_DP = "9"
  14. SETTEMPF_DP = "10"
  15. CURTEMPF_DP = "11"
  16. IONSHOW_DP = "12"
  17. HEATSHOW_DP = "13"
  18. UNIT_DP = "14"
  19. COUNTDOWN_DP = "15"
  20. class TestDuuxBlizzard(TargetTemperatureTests, TuyaDeviceTestCase):
  21. __test__ = True
  22. def setUp(self):
  23. self.setUpForConfig(
  24. "duux_blizzard_portable_aircon.yaml",
  25. DUUX_BLIZZARD_PAYLOAD,
  26. )
  27. self.subject = self.entities.get("climate")
  28. self.ionizer = self.entities.get("switch_ionizer")
  29. self.setUpTargetTemperature(
  30. TEMPERATURE_DP,
  31. self.subject,
  32. min=18.0,
  33. max=32.0,
  34. )
  35. self.mark_secondary(
  36. [
  37. "number_timer",
  38. "switch_sleep",
  39. "switch_ionizer",
  40. "binary_sensor_tank_full",
  41. "binary_sensor_problem",
  42. "select_temperature_unit",
  43. "sensor_time_remaining",
  44. ]
  45. )
  46. def test_hvac_modes_with_heat_disabled(self):
  47. self.dps[HEATSHOW_DP] = False
  48. self.assertCountEqual(
  49. self.subject.hvac_modes,
  50. [
  51. HVACMode.OFF,
  52. HVACMode.COOL,
  53. HVACMode.DRY,
  54. HVACMode.FAN_ONLY,
  55. HVACMode.AUTO,
  56. ],
  57. )
  58. def test_hvac_modes_with_heat_enabled(self):
  59. self.dps[HEATSHOW_DP] = True
  60. self.assertCountEqual(
  61. self.subject.hvac_modes,
  62. [
  63. HVACMode.OFF,
  64. HVACMode.COOL,
  65. HVACMode.DRY,
  66. HVACMode.FAN_ONLY,
  67. HVACMode.AUTO,
  68. HVACMode.HEAT,
  69. ],
  70. )
  71. def test_ionizer_availability(self):
  72. self.dps[IONSHOW_DP] = False
  73. self.dps[ION_DP] = True
  74. self.assertFalse(self.ionizer.available)
  75. self.dps[IONSHOW_DP] = True
  76. self.assertTrue(self.ionizer.available)