|
|
@@ -0,0 +1,86 @@
|
|
|
+from homeassistant.components.climate.const import ClimateEntityFeature, HVACMode
|
|
|
+from homeassistant.const import UnitOfTemperature
|
|
|
+
|
|
|
+from ..const import DUUX_BLIZZARD_PAYLOAD
|
|
|
+from ..helpers import assert_device_properties_set
|
|
|
+from ..mixins.climate import TargetTemperatureTests
|
|
|
+from .base_device_tests import TuyaDeviceTestCase
|
|
|
+
|
|
|
+POWER_DP = "1"
|
|
|
+MODE_DP = "2"
|
|
|
+SPEED_DP = "3"
|
|
|
+TIMER_DP = "4"
|
|
|
+TEMPERATURE_DP = "5"
|
|
|
+SLEEP_DP = "6"
|
|
|
+ION_DP = "7"
|
|
|
+CURRENTTEMP_DP = "8"
|
|
|
+FAULT_DP = "9"
|
|
|
+SETTEMPF_DP = "10"
|
|
|
+CURTEMPF_DP = "11"
|
|
|
+IONSHOW_DP = "12"
|
|
|
+HEATSHOW_DP = "13"
|
|
|
+UNIT_DP = "14"
|
|
|
+COUNTDOWN_DP = "15"
|
|
|
+
|
|
|
+
|
|
|
+class TestDuuxBlizzard(TargetTemperatureTests, TuyaDeviceTestCase):
|
|
|
+ __test__ = True
|
|
|
+
|
|
|
+ def setUp(self):
|
|
|
+ self.setUpForConfig(
|
|
|
+ "duux_blizzard_portable_aircon.yaml",
|
|
|
+ DUUX_BLIZZARD_PAYLOAD,
|
|
|
+ )
|
|
|
+ self.subject = self.entities.get("climate")
|
|
|
+ self.ionizer = self.entities.get("switch_ionizer")
|
|
|
+ self.setUpTargetTemperature(
|
|
|
+ TEMPERATURE_DP,
|
|
|
+ self.subject,
|
|
|
+ min=18.0,
|
|
|
+ max=32.0,
|
|
|
+ )
|
|
|
+ self.mark_secondary(
|
|
|
+ [
|
|
|
+ "number_timer",
|
|
|
+ "switch_sleep",
|
|
|
+ "switch_ionizer",
|
|
|
+ "binary_sensor_tank_full",
|
|
|
+ "binary_sensor_problem",
|
|
|
+ "select_temperature_unit",
|
|
|
+ "sensor_time_remaining",
|
|
|
+ ]
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_hvac_modes_with_heat_disabled(self):
|
|
|
+ self.dps[HEATSHOW_DP] = False
|
|
|
+ self.assertCountEqual(
|
|
|
+ self.subject.hvac_modes,
|
|
|
+ [
|
|
|
+ HVACMode.OFF,
|
|
|
+ HVACMode.COOL,
|
|
|
+ HVACMode.DRY,
|
|
|
+ HVACMode.FAN_ONLY,
|
|
|
+ HVACMode.AUTO,
|
|
|
+ ],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_hvac_modes_with_heat_enabled(self):
|
|
|
+ self.dps[HEATSHOW_DP] = True
|
|
|
+ self.assertCountEqual(
|
|
|
+ self.subject.hvac_modes,
|
|
|
+ [
|
|
|
+ HVACMode.OFF,
|
|
|
+ HVACMode.COOL,
|
|
|
+ HVACMode.DRY,
|
|
|
+ HVACMode.FAN_ONLY,
|
|
|
+ HVACMode.AUTO,
|
|
|
+ HVACMode.HEAT,
|
|
|
+ ],
|
|
|
+ )
|
|
|
+
|
|
|
+ def test_ionizer_availability(self):
|
|
|
+ self.dps[IONSHOW_DP] = False
|
|
|
+ self.dps[ION_DP] = True
|
|
|
+ self.assertFalse(self.ionizer.available)
|
|
|
+ self.dps[IONSHOW_DP] = True
|
|
|
+ self.assertTrue(self.ionizer.available)
|