mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 20:57:21 +00:00
Simplify reolink light tests (#147637)
This commit is contained in:
parent
1ca03c8ae9
commit
e481f14335
@ -22,14 +22,23 @@ from .conftest import TEST_NVR_NAME
|
||||
from tests.common import MockConfigEntry
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("whiteled_brightness", "expected_brightness"),
|
||||
[
|
||||
(100, 255),
|
||||
(None, None),
|
||||
],
|
||||
)
|
||||
async def test_light_state(
|
||||
hass: HomeAssistant,
|
||||
config_entry: MockConfigEntry,
|
||||
reolink_host: MagicMock,
|
||||
whiteled_brightness: int | None,
|
||||
expected_brightness: int | None,
|
||||
) -> None:
|
||||
"""Test light entity state with floodlight."""
|
||||
reolink_host.whiteled_state.return_value = True
|
||||
reolink_host.whiteled_brightness.return_value = 100
|
||||
reolink_host.whiteled_brightness.return_value = whiteled_brightness
|
||||
|
||||
with patch("homeassistant.components.reolink.PLATFORMS", [Platform.LIGHT]):
|
||||
assert await hass.config_entries.async_setup(config_entry.entry_id)
|
||||
@ -40,28 +49,7 @@ async def test_light_state(
|
||||
|
||||
state = hass.states.get(entity_id)
|
||||
assert state.state == STATE_ON
|
||||
assert state.attributes["brightness"] == 255
|
||||
|
||||
|
||||
async def test_light_brightness_none(
|
||||
hass: HomeAssistant,
|
||||
config_entry: MockConfigEntry,
|
||||
reolink_host: MagicMock,
|
||||
) -> None:
|
||||
"""Test light entity with floodlight and brightness returning None."""
|
||||
reolink_host.whiteled_state.return_value = True
|
||||
reolink_host.whiteled_brightness.return_value = None
|
||||
|
||||
with patch("homeassistant.components.reolink.PLATFORMS", [Platform.LIGHT]):
|
||||
assert await hass.config_entries.async_setup(config_entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
assert config_entry.state is ConfigEntryState.LOADED
|
||||
|
||||
entity_id = f"{Platform.LIGHT}.{TEST_NVR_NAME}_floodlight"
|
||||
|
||||
state = hass.states.get(entity_id)
|
||||
assert state.state == STATE_ON
|
||||
assert state.attributes["brightness"] is None
|
||||
assert state.attributes["brightness"] == expected_brightness
|
||||
|
||||
|
||||
async def test_light_turn_off(
|
||||
@ -118,30 +106,36 @@ async def test_light_turn_on(
|
||||
[call(0, brightness=20), call(0, state=True)]
|
||||
)
|
||||
|
||||
reolink_host.set_whiteled.side_effect = ReolinkError("Test error")
|
||||
with pytest.raises(HomeAssistantError):
|
||||
await hass.services.async_call(
|
||||
LIGHT_DOMAIN,
|
||||
SERVICE_TURN_ON,
|
||||
{ATTR_ENTITY_ID: entity_id},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
reolink_host.set_whiteled.side_effect = ReolinkError("Test error")
|
||||
with pytest.raises(HomeAssistantError):
|
||||
await hass.services.async_call(
|
||||
LIGHT_DOMAIN,
|
||||
SERVICE_TURN_ON,
|
||||
{ATTR_ENTITY_ID: entity_id, ATTR_BRIGHTNESS: 51},
|
||||
blocking=True,
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
("exception", "service_data"),
|
||||
[
|
||||
(ReolinkError("Test error"), {}),
|
||||
(ReolinkError("Test error"), {ATTR_BRIGHTNESS: 51}),
|
||||
(InvalidParameterError("Test error"), {ATTR_BRIGHTNESS: 51}),
|
||||
],
|
||||
)
|
||||
async def test_light_turn_on_errors(
|
||||
hass: HomeAssistant,
|
||||
config_entry: MockConfigEntry,
|
||||
reolink_host: MagicMock,
|
||||
exception: Exception,
|
||||
service_data: dict,
|
||||
) -> None:
|
||||
"""Test light turn on service error cases."""
|
||||
with patch("homeassistant.components.reolink.PLATFORMS", [Platform.LIGHT]):
|
||||
assert await hass.config_entries.async_setup(config_entry.entry_id)
|
||||
await hass.async_block_till_done()
|
||||
assert config_entry.state is ConfigEntryState.LOADED
|
||||
|
||||
reolink_host.set_whiteled.side_effect = InvalidParameterError("Test error")
|
||||
entity_id = f"{Platform.LIGHT}.{TEST_NVR_NAME}_floodlight"
|
||||
|
||||
reolink_host.set_whiteled.side_effect = exception
|
||||
with pytest.raises(HomeAssistantError):
|
||||
await hass.services.async_call(
|
||||
LIGHT_DOMAIN,
|
||||
SERVICE_TURN_ON,
|
||||
{ATTR_ENTITY_ID: entity_id, ATTR_BRIGHTNESS: 51},
|
||||
{ATTR_ENTITY_ID: entity_id, **service_data},
|
||||
blocking=True,
|
||||
)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user