| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- """Tests for the switch entity."""
- from homeassistant.components.light import (
- EFFECT_OFF,
- ColorMode,
- LightEntityFeature,
- )
- from homeassistant.components.switch import SwitchDeviceClass
- from ..const import DIGOO_DGSP01_SOCKET_PAYLOAD
- from ..helpers import assert_device_properties_set
- from ..mixins.switch import BasicSwitchTests
- from .base_device_tests import TuyaDeviceTestCase
- SWITCH_DPS = "1"
- LIGHTSW_DPS = "27"
- COLORMODE_DPS = "28"
- BRIGHTNESS_DPS = "29"
- RGB_DPS = "31"
- UNKNOWN32_DPS = "32"
- UNKNOWN33_DPS = "33"
- UNKNOWN34_DPS = "34"
- UNKNOWN35_DPS = "35"
- UNKNOWN36_DPS = "36"
- class TestDigooNightlightSwitch(BasicSwitchTests, TuyaDeviceTestCase):
- __test__ = True
- def setUp(self):
- self.setUpForConfig(
- "digoo_dgsp01_dual_nightlight_switch.yaml",
- DIGOO_DGSP01_SOCKET_PAYLOAD,
- )
- self.subject = self.entities.get("switch_outlet")
- self.light = self.entities.get("light_nightlight")
- self.setUpBasicSwitch(
- SWITCH_DPS, self.subject, device_class=SwitchDeviceClass.OUTLET
- )
- def test_light_is_on(self):
- self.dps[LIGHTSW_DPS] = True
- self.assertTrue(self.light.is_on)
- self.dps[LIGHTSW_DPS] = False
- self.assertFalse(self.light.is_on)
- def test_light_brightness(self):
- self.dps[BRIGHTNESS_DPS] = 45
- self.dps[COLORMODE_DPS] = "white"
- self.assertEqual(self.light.brightness, 23)
- def test_light_color_mode(self):
- self.dps[COLORMODE_DPS] = "colour"
- self.assertEqual(self.light.color_mode, ColorMode.HS)
- self.dps[COLORMODE_DPS] = "white"
- self.assertEqual(self.light.color_mode, ColorMode.WHITE)
- self.dps[COLORMODE_DPS] = "scene"
- self.assertEqual(self.light.color_mode, ColorMode.HS)
- self.dps[COLORMODE_DPS] = "music"
- self.assertEqual(self.light.color_mode, ColorMode.HS)
- self.dps[COLORMODE_DPS] = "scene_1"
- self.assertEqual(self.light.color_mode, ColorMode.HS)
- self.dps[COLORMODE_DPS] = "scene_2"
- self.assertEqual(self.light.color_mode, ColorMode.HS)
- self.dps[COLORMODE_DPS] = "scene_3"
- self.assertEqual(self.light.color_mode, ColorMode.HS)
- self.dps[COLORMODE_DPS] = "scene_4"
- self.assertEqual(self.light.color_mode, ColorMode.HS)
- def test_light_hs_color(self):
- self.dps[RGB_DPS] = "ffff00003c6464"
- self.dps[BRIGHTNESS_DPS] = 255
- self.assertSequenceEqual(self.light.hs_color, (60, 100))
- def test_light_effect_list(self):
- self.assertCountEqual(
- self.light.effect_list,
- [
- "Scene",
- "Music",
- "Scene 1",
- "Scene 2",
- "Scene 3",
- "Scene 4",
- EFFECT_OFF,
- ],
- )
- def test_light_effect(self):
- self.dps[COLORMODE_DPS] = "scene"
- self.assertEqual(self.light.effect, "Scene")
- self.dps[COLORMODE_DPS] = "music"
- self.assertEqual(self.light.effect, "Music")
- self.dps[COLORMODE_DPS] = "scene_1"
- self.assertEqual(self.light.effect, "Scene 1")
- self.dps[COLORMODE_DPS] = "scene_2"
- self.assertEqual(self.light.effect, "Scene 2")
- self.dps[COLORMODE_DPS] = "scene_3"
- self.assertEqual(self.light.effect, "Scene 3")
- self.dps[COLORMODE_DPS] = "scene_4"
- self.assertEqual(self.light.effect, "Scene 4")
- self.dps[COLORMODE_DPS] = "white"
- self.assertEqual(self.light.effect, EFFECT_OFF)
- self.dps[COLORMODE_DPS] = "colour"
- self.assertEqual(self.light.effect, EFFECT_OFF)
- def test_light_supported_color_modes(self):
- self.assertCountEqual(
- self.light.supported_color_modes,
- {ColorMode.HS, ColorMode.WHITE},
- )
- def test_light_supported_features(self):
- self.assertEqual(self.light.supported_features, LightEntityFeature.EFFECT)
- async def test_turn_on(self):
- self.dps[LIGHTSW_DPS] = False
- async with assert_device_properties_set(
- self.light._device, {LIGHTSW_DPS: True}
- ):
- await self.light.async_turn_on()
- async def test_turn_off(self):
- async with assert_device_properties_set(
- self.light._device, {LIGHTSW_DPS: False}
- ):
- await self.light.async_turn_off()
- async def test_set_brightness(self):
- self.dps[COLORMODE_DPS] = "white"
- async with assert_device_properties_set(
- self.light._device,
- {
- BRIGHTNESS_DPS: 140,
- },
- ):
- await self.light.async_turn_on(brightness=128)
- async def test_set_hs_color(self):
- self.dps[RGB_DPS] = "ffffff00000064"
- self.dps[COLORMODE_DPS] = "colour"
- async with assert_device_properties_set(
- self.light._device,
- {
- RGB_DPS: "ff000000006464",
- },
- ):
- await self.light.async_turn_on(hs_color=(0, 100))
- def test_extra_state_attributes_set(self):
- self.dps[UNKNOWN32_DPS] = "32"
- self.dps[UNKNOWN33_DPS] = "33"
- self.dps[UNKNOWN34_DPS] = "34"
- self.dps[UNKNOWN35_DPS] = "35"
- self.dps[UNKNOWN36_DPS] = "36"
- self.assertDictEqual(
- self.light.extra_state_attributes,
- {
- "unknown_32": "32",
- "unknown_33": "33",
- "unknown_34": "34",
- "unknown_35": "35",
- "unknown_36": "36",
- },
- )
|