test_duux_blizzard.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from homeassistant.components.climate.const import HVACMode
  2. from ..const import DUUX_BLIZZARD_PAYLOAD
  3. from ..helpers import assert_device_properties_set
  4. from ..mixins.climate import TargetTemperatureTests
  5. from .base_device_tests import TuyaDeviceTestCase
  6. POWER_DP = "1"
  7. MODE_DP = "2"
  8. SPEED_DP = "3"
  9. TIMER_DP = "4"
  10. TEMPERATURE_DP = "5"
  11. SLEEP_DP = "6"
  12. ION_DP = "7"
  13. CURRENTTEMP_DP = "8"
  14. FAULT_DP = "9"
  15. SETTEMPF_DP = "10"
  16. CURTEMPF_DP = "11"
  17. IONSHOW_DP = "12"
  18. HEATSHOW_DP = "13"
  19. UNIT_DP = "14"
  20. COUNTDOWN_DP = "15"
  21. class TestDuuxBlizzard(TargetTemperatureTests, TuyaDeviceTestCase):
  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)
  77. async def test_set_redirected_temperature(self):
  78. self.dps[UNIT_DP] = True # Fahrenheit
  79. async with assert_device_properties_set(
  80. self.subject._device,
  81. {SETTEMPF_DP: 75},
  82. ):
  83. await self.subject.async_set_target_temperature(75)