Use new setup_test_component_platform helper instead of test fixture for light platform (#114200)

This commit is contained in:
Jan-Philipp Benecke 2024-03-26 00:17:16 +01:00 committed by GitHub
parent 6bb4e7d62c
commit 9580adfde9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 96 additions and 173 deletions

View file

@ -9,7 +9,7 @@ import pytest
from homeassistant.const import STATE_OFF, STATE_ON
if TYPE_CHECKING:
from tests.components.light.common import MockLight, SetupLightPlatformCallable
from tests.components.light.common import MockLight
@pytest.fixture(scope="session", autouse=True)
@ -118,11 +118,3 @@ def mock_light_entities() -> list["MockLight"]:
MockLight("Ceiling", STATE_OFF),
MockLight(None, STATE_OFF),
]
@pytest.fixture
def setup_light_platform() -> "SetupLightPlatformCallable":
"""Return a callable to set up the mock light entity component."""
from tests.components.light.common import setup_light_platform
return setup_light_platform

View file

@ -24,8 +24,13 @@ from homeassistant.setup import async_setup_component
from . import expose_entity, expose_new
from tests.common import MockConfigEntry, MockUser, async_mock_service
from tests.components.light.common import MockLight, SetupLightPlatformCallable
from tests.common import (
MockConfigEntry,
MockUser,
async_mock_service,
setup_test_component_platform,
)
from tests.components.light.common import MockLight
from tests.typing import ClientSessionGenerator, WebSocketGenerator
AGENT_ID_OPTIONS = [None, conversation.HOME_ASSISTANT_AGENT]
@ -257,7 +262,6 @@ async def test_http_processing_intent_entity_renamed(
hass_client: ClientSessionGenerator,
hass_admin_user: MockUser,
entity_registry: er.EntityRegistry,
setup_light_platform: SetupLightPlatformCallable,
snapshot: SnapshotAssertion,
) -> None:
"""Test processing intent via HTTP API with entities renamed later.
@ -268,7 +272,7 @@ async def test_http_processing_intent_entity_renamed(
entity = MockLight("kitchen light", "on")
entity._attr_unique_id = "1234"
entity.entity_id = "light.kitchen"
setup_light_platform(hass, [entity])
setup_test_component_platform(hass, LIGHT_DOMAIN, [entity])
assert await async_setup_component(
hass,
@ -346,7 +350,6 @@ async def test_http_processing_intent_entity_exposed(
hass_client: ClientSessionGenerator,
hass_admin_user: MockUser,
entity_registry: er.EntityRegistry,
setup_light_platform: SetupLightPlatformCallable,
snapshot: SnapshotAssertion,
) -> None:
"""Test processing intent via HTTP API with manual expose.
@ -357,7 +360,7 @@ async def test_http_processing_intent_entity_exposed(
entity = MockLight("kitchen light", "on")
entity._attr_unique_id = "1234"
entity.entity_id = "light.kitchen"
setup_light_platform(hass, [entity])
setup_test_component_platform(hass, LIGHT_DOMAIN, [entity])
assert await async_setup_component(
hass,
@ -449,7 +452,6 @@ async def test_http_processing_intent_conversion_not_expose_new(
hass_client: ClientSessionGenerator,
hass_admin_user: MockUser,
entity_registry: er.EntityRegistry,
setup_light_platform: SetupLightPlatformCallable,
snapshot: SnapshotAssertion,
) -> None:
"""Test processing intent via HTTP API when not exposing new entities."""
@ -459,7 +461,7 @@ async def test_http_processing_intent_conversion_not_expose_new(
entity = MockLight("kitchen light", "on")
entity._attr_unique_id = "1234"
entity.entity_id = "light.kitchen"
setup_light_platform(hass, [entity])
setup_test_component_platform(hass, LIGHT_DOMAIN, [entity])
assert await async_setup_component(
hass,

View file

@ -44,8 +44,12 @@ from homeassistant.core import Event, HomeAssistant
from homeassistant.helpers import entity_registry as er
from homeassistant.setup import async_setup_component
from tests.common import async_capture_events, get_fixture_path
from tests.components.light.common import MockLight, SetupLightPlatformCallable
from tests.common import (
async_capture_events,
get_fixture_path,
setup_test_component_platform,
)
from tests.components.light.common import MockLight
async def test_default_state(
@ -261,15 +265,13 @@ async def test_state_reporting_all(hass: HomeAssistant) -> None:
assert hass.states.get("light.light_group").state == STATE_UNAVAILABLE
async def test_brightness(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_brightness(hass: HomeAssistant) -> None:
"""Test brightness reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.BRIGHTNESS}
@ -334,15 +336,13 @@ async def test_brightness(
assert state.attributes[ATTR_SUPPORTED_COLOR_MODES] == ["brightness"]
async def test_color_hs(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_color_hs(hass: HomeAssistant) -> None:
"""Test hs color reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.HS}
@ -406,15 +406,13 @@ async def test_color_hs(
assert state.attributes[ATTR_SUPPORTED_FEATURES] == 0
async def test_color_rgb(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_color_rgb(hass: HomeAssistant) -> None:
"""Test rgbw color reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.RGB}
@ -480,15 +478,13 @@ async def test_color_rgb(
assert state.attributes[ATTR_SUPPORTED_FEATURES] == 0
async def test_color_rgbw(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_color_rgbw(hass: HomeAssistant) -> None:
"""Test rgbw color reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.RGBW}
@ -554,15 +550,13 @@ async def test_color_rgbw(
assert state.attributes[ATTR_SUPPORTED_FEATURES] == 0
async def test_color_rgbww(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_color_rgbww(hass: HomeAssistant) -> None:
"""Test rgbww color reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.RGBWW}
@ -628,15 +622,13 @@ async def test_color_rgbww(
assert state.attributes[ATTR_SUPPORTED_FEATURES] == 0
async def test_white(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_white(hass: HomeAssistant) -> None:
"""Test white reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.HS, ColorMode.WHITE}
@ -687,15 +679,13 @@ async def test_white(
assert state.attributes[ATTR_SUPPORTED_COLOR_MODES] == ["hs", "white"]
async def test_color_temp(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_color_temp(hass: HomeAssistant) -> None:
"""Test color temp reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.COLOR_TEMP}
@ -758,16 +748,14 @@ async def test_color_temp(
assert state.attributes[ATTR_SUPPORTED_COLOR_MODES] == ["color_temp"]
async def test_emulated_color_temp_group(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_emulated_color_temp_group(hass: HomeAssistant) -> None:
"""Test emulated color temperature in a group."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
MockLight("test3", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.COLOR_TEMP}
@ -824,9 +812,7 @@ async def test_emulated_color_temp_group(
assert state.attributes[ATTR_HS_COLOR] == (27.001, 19.243)
async def test_min_max_mireds(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_min_max_mireds(hass: HomeAssistant) -> None:
"""Test min/max mireds reporting.
min/max mireds is reported both when light is on and off
@ -835,7 +821,7 @@ async def test_min_max_mireds(
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.COLOR_TEMP}
@ -1005,16 +991,14 @@ async def test_effect(hass: HomeAssistant) -> None:
assert state.attributes[ATTR_EFFECT] == "Random"
async def test_supported_color_modes(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_supported_color_modes(hass: HomeAssistant) -> None:
"""Test supported_color_modes reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
MockLight("test3", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.COLOR_TEMP, ColorMode.HS}
@ -1055,16 +1039,14 @@ async def test_supported_color_modes(
}
async def test_color_mode(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_color_mode(hass: HomeAssistant) -> None:
"""Test color_mode reporting."""
entities = [
MockLight("test1", STATE_ON),
MockLight("test2", STATE_OFF),
MockLight("test3", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {ColorMode.COLOR_TEMP, ColorMode.HS}
@ -1130,9 +1112,7 @@ async def test_color_mode(
assert state.attributes[ATTR_COLOR_MODE] == ColorMode.HS
async def test_color_mode2(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_color_mode2(hass: HomeAssistant) -> None:
"""Test onoff color_mode and brightness are given lowest priority."""
entities = [
MockLight("test1", STATE_ON),
@ -1142,7 +1122,7 @@ async def test_color_mode2(
MockLight("test5", STATE_ON),
MockLight("test6", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity = entities[0]
entity.supported_color_modes = {ColorMode.COLOR_TEMP}
@ -1256,7 +1236,6 @@ async def test_supported_features(hass: HomeAssistant) -> None:
@pytest.mark.parametrize("supported_color_modes", [ColorMode.HS, ColorMode.RGB])
async def test_service_calls(
hass: HomeAssistant,
setup_light_platform: SetupLightPlatformCallable,
supported_color_modes,
) -> None:
"""Test service calls."""
@ -1265,7 +1244,7 @@ async def test_service_calls(
MockLight("ceiling_lights", STATE_OFF),
MockLight("kitchen_lights", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, LIGHT_DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {supported_color_modes}

View file

@ -4,7 +4,6 @@ All containing methods are legacy helpers that should not be used by new
components. Instead call the service directly.
"""
from collections.abc import Callable
from homeassistant.components.light import (
ATTR_BRIGHTNESS,
@ -33,12 +32,9 @@ from homeassistant.const import (
SERVICE_TURN_OFF,
SERVICE_TURN_ON,
)
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
from homeassistant.loader import bind_hass
from tests.common import MockPlatform, MockToggleEntity, mock_platform
from tests.common import MockToggleEntity
@bind_hass
@ -288,25 +284,3 @@ class MockLight(MockToggleEntity, LightEntity):
setattr(self, "brightness", value)
if key in TURN_ON_ARG_TO_COLOR_MODE:
self._attr_color_mode = TURN_ON_ARG_TO_COLOR_MODE[key]
SetupLightPlatformCallable = Callable[[HomeAssistant, list[MockLight]], None]
def setup_light_platform(hass: HomeAssistant, entities: list[MockLight]) -> None:
"""Set up the mock light entity platform."""
async def async_setup_platform(
hass: HomeAssistant,
config: ConfigType,
async_add_entities: AddEntitiesCallback,
discovery_info: DiscoveryInfoType | None = None,
) -> None:
"""Set up test light platform."""
async_add_entities(entities)
mock_platform(
hass,
f"test.{DOMAIN}",
MockPlatform(async_setup_platform=async_setup_platform),
)

View file

@ -21,8 +21,9 @@ from tests.common import (
async_get_device_automation_capabilities,
async_get_device_automations,
async_mock_service,
setup_test_component_platform,
)
from tests.components.light.common import MockLight, SetupLightPlatformCallable
from tests.components.light.common import MockLight
@pytest.fixture(autouse=True, name="stub_blueprint_populate")
@ -324,7 +325,6 @@ async def test_if_fires_on_for_condition(
device_registry: dr.DeviceRegistry,
entity_registry: er.EntityRegistry,
calls,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test for firing if condition is on with delay."""
@ -344,7 +344,7 @@ async def test_if_fires_on_for_condition(
point2 = point1 + timedelta(seconds=10)
point3 = point2 + timedelta(seconds=10)
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, DOMAIN, mock_light_entities)
assert await async_setup_component(hass, DOMAIN, {DOMAIN: {CONF_PLATFORM: "test"}})
await hass.async_block_till_done()

View file

@ -22,8 +22,13 @@ from homeassistant.exceptions import HomeAssistantError, Unauthorized
from homeassistant.setup import async_setup_component
import homeassistant.util.color as color_util
from tests.common import MockEntityPlatform, MockUser, async_mock_service
from tests.components.light.common import MockLight, SetupLightPlatformCallable
from tests.common import (
MockEntityPlatform,
MockUser,
async_mock_service,
setup_test_component_platform,
)
from tests.components.light.common import MockLight
orig_Profiles = light.Profiles
@ -111,11 +116,10 @@ async def test_methods(hass: HomeAssistant) -> None:
async def test_services(
hass: HomeAssistant,
mock_light_profiles,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test the provided services."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
assert await async_setup_component(
hass, light.DOMAIN, {light.DOMAIN: {CONF_PLATFORM: "test"}}
@ -512,11 +516,10 @@ async def test_light_profiles(
profile_name,
expected_data,
last_call,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test light profiles."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
profile_mock_data = {
"test": (0.4, 0.6, 100, 0),
@ -561,11 +564,10 @@ async def test_light_profiles(
async def test_default_profiles_group(
hass: HomeAssistant,
mock_light_profiles,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test default turn-on light profile for all lights."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
assert await async_setup_component(
hass, light.DOMAIN, {light.DOMAIN: {CONF_PLATFORM: "test"}}
@ -787,11 +789,10 @@ async def test_default_profiles_light(
extra_call_params,
expected_params_state_was_off,
expected_params_state_was_on,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test default turn-on light profile for a specific light."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
assert await async_setup_component(
hass, light.DOMAIN, {light.DOMAIN: {CONF_PLATFORM: "test"}}
@ -857,11 +858,10 @@ async def test_default_profiles_light(
async def test_light_context(
hass: HomeAssistant,
hass_admin_user: MockUser,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test that light context works."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
assert await async_setup_component(hass, "light", {"light": {"platform": "test"}})
await hass.async_block_till_done()
@ -886,11 +886,10 @@ async def test_light_context(
async def test_light_turn_on_auth(
hass: HomeAssistant,
hass_read_only_user: MockUser,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test that light context works."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
assert await async_setup_component(hass, "light", {"light": {"platform": "test"}})
await hass.async_block_till_done()
@ -910,16 +909,14 @@ async def test_light_turn_on_auth(
)
async def test_light_brightness_step(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_brightness_step(hass: HomeAssistant) -> None:
"""Test that light context works."""
entities = [
MockLight("Test_0", STATE_ON),
MockLight("Test_1", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_features = light.SUPPORT_BRIGHTNESS
@ -986,11 +983,10 @@ async def test_light_brightness_step(
async def test_light_brightness_pct_conversion(
hass: HomeAssistant,
enable_custom_integrations: None,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test that light brightness percent conversion."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
entity = mock_light_entities[0]
entity.supported_features = light.SUPPORT_BRIGHTNESS
@ -1147,7 +1143,7 @@ invalid_no_brightness_no_color_no_transition,,,
@pytest.mark.parametrize("light_state", [STATE_ON, STATE_OFF])
async def test_light_backwards_compatibility_supported_color_modes(
hass: HomeAssistant, light_state, setup_light_platform: SetupLightPlatformCallable
hass: HomeAssistant, light_state
) -> None:
"""Test supported_color_modes if not implemented by the entity."""
entities = [
@ -1186,7 +1182,7 @@ async def test_light_backwards_compatibility_supported_color_modes(
entity4.supported_color_modes = None
entity4.color_mode = None
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
assert await async_setup_component(hass, "light", {"light": {"platform": "test"}})
await hass.async_block_till_done()
@ -1230,9 +1226,7 @@ async def test_light_backwards_compatibility_supported_color_modes(
assert state.attributes["color_mode"] == light.ColorMode.UNKNOWN
async def test_light_backwards_compatibility_color_mode(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_backwards_compatibility_color_mode(hass: HomeAssistant) -> None:
"""Test color_mode if not implemented by the entity."""
entities = [
MockLight("Test_0", STATE_ON),
@ -1275,7 +1269,7 @@ async def test_light_backwards_compatibility_color_mode(
entity4.hs_color = (240, 100)
entity4.color_temp_kelvin = 10000
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
assert await async_setup_component(hass, "light", {"light": {"platform": "test"}})
await hass.async_block_till_done()
@ -1308,14 +1302,12 @@ async def test_light_backwards_compatibility_color_mode(
assert state.attributes["color_mode"] == light.ColorMode.HS
async def test_light_service_call_rgbw(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_service_call_rgbw(hass: HomeAssistant) -> None:
"""Test rgbw functionality in service calls."""
entity0 = MockLight("Test_rgbw", STATE_ON)
entity0.supported_color_modes = {light.ColorMode.RGBW}
setup_light_platform(hass, [entity0])
setup_test_component_platform(hass, light.DOMAIN, [entity0])
assert await async_setup_component(hass, "light", {"light": {"platform": "test"}})
await hass.async_block_till_done()
@ -1338,9 +1330,7 @@ async def test_light_service_call_rgbw(
assert data == {"brightness": 255, "rgbw_color": (10, 20, 30, 40)}
async def test_light_state_off(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_state_off(hass: HomeAssistant) -> None:
"""Test rgbw color conversion in state updates."""
entities = [
MockLight("Test_onoff", STATE_OFF),
@ -1348,7 +1338,7 @@ async def test_light_state_off(
MockLight("Test_ct", STATE_OFF),
MockLight("Test_rgbw", STATE_OFF),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {light.ColorMode.ONOFF}
@ -1411,12 +1401,10 @@ async def test_light_state_off(
}
async def test_light_state_rgbw(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_state_rgbw(hass: HomeAssistant) -> None:
"""Test rgbw color conversion in state updates."""
entity0 = MockLight("Test_rgbw", STATE_ON)
setup_light_platform(hass, [entity0])
setup_test_component_platform(hass, light.DOMAIN, [entity0])
entity0.brightness = 255
entity0.supported_color_modes = {light.ColorMode.RGBW}
@ -1444,12 +1432,10 @@ async def test_light_state_rgbw(
}
async def test_light_state_rgbww(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_state_rgbww(hass: HomeAssistant) -> None:
"""Test rgbww color conversion in state updates."""
entity0 = MockLight("Test_rgbww", STATE_ON)
setup_light_platform(hass, [entity0])
setup_test_component_platform(hass, light.DOMAIN, [entity0])
entity0.supported_color_modes = {light.ColorMode.RGBWW}
entity0.color_mode = light.ColorMode.RGBWW
@ -1477,9 +1463,7 @@ async def test_light_state_rgbww(
}
async def test_light_service_call_color_conversion(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_service_call_color_conversion(hass: HomeAssistant) -> None:
"""Test color conversion in service calls."""
entities = [
MockLight("Test_hs", STATE_ON),
@ -1491,7 +1475,7 @@ async def test_light_service_call_color_conversion(
MockLight("Test_rgbww", STATE_ON),
MockLight("Test_temperature", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {light.ColorMode.HS}
@ -1923,7 +1907,7 @@ async def test_light_service_call_color_conversion(
async def test_light_service_call_color_conversion_named_tuple(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
hass: HomeAssistant,
) -> None:
"""Test a named tuple (RGBColor) is handled correctly."""
entities = [
@ -1935,7 +1919,7 @@ async def test_light_service_call_color_conversion_named_tuple(
MockLight("Test_rgbw", STATE_ON),
MockLight("Test_rgbww", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {light.ColorMode.HS}
@ -2002,16 +1986,14 @@ async def test_light_service_call_color_conversion_named_tuple(
assert data == {"brightness": 64, "rgbww_color": (128, 0, 0, 0, 0)}
async def test_light_service_call_color_temp_emulation(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_service_call_color_temp_emulation(hass: HomeAssistant) -> None:
"""Test color conversion in service calls."""
entities = [
MockLight("Test_hs_ct", STATE_ON),
MockLight("Test_hs", STATE_ON),
MockLight("Test_hs_white", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {light.ColorMode.COLOR_TEMP, light.ColorMode.HS}
@ -2062,15 +2044,13 @@ async def test_light_service_call_color_temp_emulation(
assert data == {"brightness": 255, "hs_color": (27.001, 19.243)}
async def test_light_service_call_color_temp_conversion(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_service_call_color_temp_conversion(hass: HomeAssistant) -> None:
"""Test color temp conversion in service calls."""
entities = [
MockLight("Test_rgbww_ct", STATE_ON),
MockLight("Test_rgbww", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {
@ -2195,15 +2175,13 @@ async def test_light_service_call_color_temp_conversion(
assert data == {"brightness": 255, "rgbww_color": (0, 0, 0, 66, 189)}
async def test_light_mired_color_temp_conversion(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_mired_color_temp_conversion(hass: HomeAssistant) -> None:
"""Test color temp conversion from K to legacy mired."""
entities = [
MockLight("Test_rgbww_ct", STATE_ON),
MockLight("Test_rgbww", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {
@ -2243,13 +2221,11 @@ async def test_light_mired_color_temp_conversion(
assert state.attributes["color_temp_kelvin"] == 3500
async def test_light_service_call_white_mode(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_service_call_white_mode(hass: HomeAssistant) -> None:
"""Test color_mode white in service calls."""
entity0 = MockLight("Test_white", STATE_ON)
entity0.supported_color_modes = {light.ColorMode.HS, light.ColorMode.WHITE}
setup_light_platform(hass, [entity0])
setup_test_component_platform(hass, light.DOMAIN, [entity0])
assert await async_setup_component(hass, "light", {"light": {"platform": "test"}})
await hass.async_block_till_done()
@ -2344,9 +2320,7 @@ async def test_light_service_call_white_mode(
assert data == {"white": 128}
async def test_light_state_color_conversion(
hass: HomeAssistant, setup_light_platform: SetupLightPlatformCallable
) -> None:
async def test_light_state_color_conversion(hass: HomeAssistant) -> None:
"""Test color conversion in state updates."""
entities = [
MockLight("Test_hs", STATE_ON),
@ -2354,7 +2328,7 @@ async def test_light_state_color_conversion(
MockLight("Test_xy", STATE_ON),
MockLight("Test_legacy", STATE_ON),
]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
entity0 = entities[0]
entity0.supported_color_modes = {light.ColorMode.HS}
@ -2415,11 +2389,10 @@ async def test_light_state_color_conversion(
async def test_services_filter_parameters(
hass: HomeAssistant,
mock_light_profiles,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> None:
"""Test turn_on and turn_off filters unsupported parameters."""
setup_light_platform(hass, mock_light_entities)
setup_test_component_platform(hass, light.DOMAIN, mock_light_entities)
assert await async_setup_component(
hass, light.DOMAIN, {light.DOMAIN: {CONF_PLATFORM: "test"}}

View file

@ -18,19 +18,22 @@ from homeassistant.setup import async_setup_component
from homeassistant.util import dt as dt_util
from homeassistant.util.yaml import loader as yaml_loader
from tests.common import async_mock_service, mock_restore_cache
from tests.components.light.common import MockLight, SetupLightPlatformCallable
from tests.common import (
async_mock_service,
mock_restore_cache,
setup_test_component_platform,
)
from tests.components.light.common import MockLight
@pytest.fixture(autouse=True)
def entities(
hass: HomeAssistant,
setup_light_platform: SetupLightPlatformCallable,
mock_light_entities: list[MockLight],
) -> list[MockLight]:
"""Initialize the test light."""
entities = mock_light_entities[0:2]
setup_light_platform(hass, entities)
setup_test_component_platform(hass, light.DOMAIN, entities)
return entities