test_goldair_portable_airconditioner.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from homeassistant.components.climate.const import (
  2. SWING_BOTH,
  3. SWING_HORIZONTAL,
  4. SWING_OFF,
  5. SWING_ON,
  6. SWING_VERTICAL,
  7. )
  8. from ..const import GOLDAIR_PORTABLE_AIR_CONDITIONER_PAYLOAD
  9. from ..mixins.climate import TargetTemperatureTests
  10. from .base_device_tests import TuyaDeviceTestCase
  11. POWER_DP = "1"
  12. TEMPERATURE_DP = "2"
  13. CURRENT_TEMPERATURE_DP = "3"
  14. MODE_DP = "4"
  15. FANMODE_DP = "5"
  16. IONIZER_DP = "11"
  17. SWING1_DP = "15"
  18. FAULT_DP = "20"
  19. SLEEP_DP = "103"
  20. ONTIMER_DP = "104"
  21. OFFTIMER_DP = "105"
  22. TEMPF_DP = "107"
  23. CURTEMPF_DP = "108"
  24. FEATURE_DP = "109"
  25. SWING2_DP = "110"
  26. class TestGoldairPortableAir(TargetTemperatureTests, TuyaDeviceTestCase):
  27. __test__ = True
  28. def setUp(self):
  29. self.setUpForConfig(
  30. "goldair_portable_airconditioner.yaml",
  31. GOLDAIR_PORTABLE_AIR_CONDITIONER_PAYLOAD,
  32. )
  33. self.subject = self.entities.get("climate")
  34. self.setUpTargetTemperature(
  35. TEMPERATURE_DP,
  36. self.subject,
  37. min=16.0,
  38. max=31.0,
  39. )
  40. self.mark_secondary(
  41. [
  42. "binary_sensor_problem",
  43. "binary_sensor_tank_full",
  44. "number_on_timer",
  45. "number_off_timer",
  46. ],
  47. )
  48. def test_swing_modes_with_vswing_unavailable(self):
  49. self.dps[FEATURE_DP] = 26
  50. self.assertCountEqual(self.subject.swing_modes, [SWING_OFF, SWING_ON])
  51. def test_swing_modes_with_vswing_available(self):
  52. self.dps[FEATURE_DP] = 27
  53. self.assertCountEqual(
  54. self.subject.swing_modes,
  55. [
  56. SWING_OFF,
  57. SWING_VERTICAL,
  58. SWING_HORIZONTAL,
  59. SWING_BOTH,
  60. ],
  61. )
  62. def test_swing_when_no_vswing(self):
  63. self.dps[FEATURE_DP] = 26
  64. self.dps[SWING1_DP] = "on"
  65. self.dps[SWING2_DP] = True
  66. self.assertEqual(self.subject.swing_mode, SWING_ON)
  67. self.dps[SWING1_DP] = "off"
  68. self.assertEqual(self.subject.swing_mode, SWING_ON)
  69. self.dps[SWING2_DP] = False
  70. self.assertEqual(self.subject.swing_mode, SWING_OFF)
  71. def test_swing_when_vswing(self):
  72. self.dps[FEATURE_DP] = 27
  73. self.dps[SWING1_DP] = "on"
  74. self.dps[SWING2_DP] = True
  75. self.assertEqual(self.subject.swing_mode, SWING_BOTH)
  76. self.dps[SWING1_DP] = "off"
  77. self.assertEqual(self.subject.swing_mode, SWING_HORIZONTAL)
  78. self.dps[SWING2_DP] = False
  79. self.assertEqual(self.subject.swing_mode, SWING_OFF)
  80. self.dps[SWING1_DP] = "on"
  81. self.assertEqual(self.subject.swing_mode, SWING_VERTICAL)
  82. def test_available(self):
  83. """Override the base class, as this has availability logic."""
  84. pass