Tweak light.valid_supported_color_modes (#51659)

This commit is contained in:
Erik Montnemery 2021-06-09 12:53:08 +02:00 committed by GitHub
parent f09f47f13a
commit 87813ea991
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 40 additions and 1 deletions

View File

@ -92,7 +92,7 @@ def valid_supported_color_modes(color_modes: Iterable[str]) -> set[str]:
or COLOR_MODE_UNKNOWN in color_modes
or (COLOR_MODE_BRIGHTNESS in color_modes and len(color_modes) > 1)
or (COLOR_MODE_ONOFF in color_modes and len(color_modes) > 1)
or (COLOR_MODE_WHITE in color_modes and len(color_modes) == 1)
or (COLOR_MODE_WHITE in color_modes and not color_supported(color_modes))
):
raise vol.Error(f"Invalid supported_color_modes {sorted(color_modes)}")
return color_modes

View File

@ -1943,3 +1943,42 @@ async def test_services_filter_parameters(
_, data = ent1.last_call("turn_off")
assert data == {}
def test_valid_supported_color_modes():
"""Test valid_supported_color_modes."""
supported = {light.COLOR_MODE_HS}
assert light.valid_supported_color_modes(supported) == supported
# Supported color modes must not be empty
supported = set()
with pytest.raises(vol.Error):
light.valid_supported_color_modes(supported)
# COLOR_MODE_WHITE must be combined with a color mode supporting color
supported = {light.COLOR_MODE_WHITE}
with pytest.raises(vol.Error):
light.valid_supported_color_modes(supported)
supported = {light.COLOR_MODE_WHITE, light.COLOR_MODE_COLOR_TEMP}
with pytest.raises(vol.Error):
light.valid_supported_color_modes(supported)
supported = {light.COLOR_MODE_WHITE, light.COLOR_MODE_HS}
assert light.valid_supported_color_modes(supported) == supported
# COLOR_MODE_ONOFF must be the only supported mode
supported = {light.COLOR_MODE_ONOFF}
assert light.valid_supported_color_modes(supported) == supported
supported = {light.COLOR_MODE_ONOFF, light.COLOR_MODE_COLOR_TEMP}
with pytest.raises(vol.Error):
light.valid_supported_color_modes(supported)
# COLOR_MODE_BRIGHTNESS must be the only supported mode
supported = {light.COLOR_MODE_BRIGHTNESS}
assert light.valid_supported_color_modes(supported) == supported
supported = {light.COLOR_MODE_BRIGHTNESS, light.COLOR_MODE_COLOR_TEMP}
with pytest.raises(vol.Error):
light.valid_supported_color_modes(supported)