소스 검색

Fan: update tests and fix issue.

Jason Rumney 2 년 전
부모
커밋
6f3982ba0e
2개의 변경된 파일21개의 추가작업 그리고 9개의 파일을 삭제
  1. 1 1
      custom_components/tuya_local/fan.py
  2. 20 8
      tests/devices/test_goldair_fan.py

+ 1 - 1
custom_components/tuya_local/fan.py

@@ -120,7 +120,7 @@ class TuyaLocalFan(TuyaLocalEntity, FanEntity):
 
         values_to_set = self._speed_dps.get_values_to_set(self._device, percentage)
         if not self.is_on and self._switch_dps:
-            values_to_set.update(self._switch_dps.get_values_to_set(self._device, true))
+            values_to_set.update(self._switch_dps.get_values_to_set(self._device, True))
 
         await self._device.async_set_properties(values_to_set)
 

+ 20 - 8
tests/devices/test_goldair_fan.py

@@ -6,7 +6,7 @@ from ..mixins.light import BasicLightTests
 from ..mixins.switch import SwitchableTests
 from .base_device_tests import TuyaDeviceTestCase
 
-HVACMODE_DPS = "1"
+SWITCH_DPS = "1"
 FANMODE_DPS = "2"
 PRESET_DPS = "3"
 SWING_DPS = "8"
@@ -20,7 +20,7 @@ class TestGoldairFan(BasicLightTests, SwitchableTests, TuyaDeviceTestCase):
     def setUp(self):
         self.setUpForConfig("goldair_fan.yaml", FAN_PAYLOAD)
         self.subject = self.entities.get("fan")
-        self.setUpSwitchable(HVACMODE_DPS, self.subject)
+        self.setUpSwitchable(SWITCH_DPS, self.subject)
         self.setUpBasicLight(LIGHT_DPS, self.entities.get("light_display"))
         self.mark_secondary(["light_display"])
 
@@ -35,21 +35,21 @@ class TestGoldairFan(BasicLightTests, SwitchableTests, TuyaDeviceTestCase):
         )
 
     def test_is_on(self):
-        self.dps[HVACMODE_DPS] = True
+        self.dps[SWITCH_DPS] = True
         self.assertTrue(self.subject.is_on)
 
-        self.dps[HVACMODE_DPS] = False
+        self.dps[SWITCH_DPS] = False
         self.assertFalse(self.subject.is_on)
 
     async def test_turn_on(self):
         async with assert_device_properties_set(
-            self.subject._device, {HVACMODE_DPS: True}
+            self.subject._device, {SWITCH_DPS: True}
         ):
             await self.subject.async_turn_on()
 
     async def test_turn_off(self):
         async with assert_device_properties_set(
-            self.subject._device, {HVACMODE_DPS: False}
+            self.subject._device, {SWITCH_DPS: False}
         ):
             await self.subject.async_turn_off()
 
@@ -116,21 +116,33 @@ class TestGoldairFan(BasicLightTests, SwitchableTests, TuyaDeviceTestCase):
 
     async def test_set_speed_in_normal_mode(self):
         self.dps[PRESET_DPS] = "normal"
+        self.dps[SWITCH_DPS] = True
         async with assert_device_properties_set(self.subject._device, {FANMODE_DPS: 3}):
             await self.subject.async_set_percentage(25)
 
     async def test_set_speed_in_normal_mode_snaps(self):
         self.dps[PRESET_DPS] = "normal"
+        self.dps[SWITCH_DPS] = True
         async with assert_device_properties_set(
             self.subject._device, {FANMODE_DPS: 10}
         ):
             await self.subject.async_set_percentage(80)
 
-    async def test_set_speed_in_sleep_mode_snaps(self):
+    async def test_set_speed_in_sleep_mode_while_off_snaps_and_turns_on(self):
         self.dps[PRESET_DPS] = "sleep"
-        async with assert_device_properties_set(self.subject._device, {FANMODE_DPS: 8}):
+        self.dps[SWITCH_DPS] = False
+        async with assert_device_properties_set(
+            self.subject._device, {FANMODE_DPS: 8, SWITCH_DPS: True}
+        ):
             await self.subject.async_set_percentage(75)
 
+    async def test_set_speed_to_zero_turns_off(self):
+        self.dps[SWITCH_DPS] = True
+        async with assert_device_properties_set(
+            self.subject._device, {SWITCH_DPS: False}
+        ):
+            await self.subject.async_set_percentage(0)
+
     def test_extra_state_attributes(self):
         self.dps[TIMER_DPS] = "5"
         self.assertEqual(self.subject.extra_state_attributes, {"timer": "5"})