54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
"""Test Home Assistant scenes."""
|
|
from unittest.mock import patch
|
|
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
|
|
async def test_reload_config_service(hass):
|
|
"""Test the reload config service."""
|
|
assert await async_setup_component(hass, "scene", {})
|
|
|
|
with patch(
|
|
"homeassistant.config.load_yaml_config_file",
|
|
autospec=True,
|
|
return_value={"scene": {"name": "Hallo", "entities": {"light.kitchen": "on"}}},
|
|
), patch("homeassistant.config.find_config_file", return_value=""):
|
|
await hass.services.async_call("scene", "reload", blocking=True)
|
|
await hass.async_block_till_done()
|
|
|
|
assert hass.states.get("scene.hallo") is not None
|
|
|
|
with patch(
|
|
"homeassistant.config.load_yaml_config_file",
|
|
autospec=True,
|
|
return_value={"scene": {"name": "Bye", "entities": {"light.kitchen": "on"}}},
|
|
), patch("homeassistant.config.find_config_file", return_value=""):
|
|
await hass.services.async_call("scene", "reload", blocking=True)
|
|
await hass.async_block_till_done()
|
|
|
|
assert hass.states.get("scene.hallo") is None
|
|
assert hass.states.get("scene.bye") is not None
|
|
|
|
|
|
async def test_apply_service(hass):
|
|
"""Test the apply service."""
|
|
assert await async_setup_component(hass, "scene", {})
|
|
assert await async_setup_component(hass, "light", {"light": {"platform": "demo"}})
|
|
|
|
assert await hass.services.async_call(
|
|
"scene", "apply", {"entities": {"light.bed_light": "off"}}, blocking=True
|
|
)
|
|
|
|
assert hass.states.get("light.bed_light").state == "off"
|
|
|
|
assert await hass.services.async_call(
|
|
"scene",
|
|
"apply",
|
|
{"entities": {"light.bed_light": {"state": "on", "brightness": 50}}},
|
|
blocking=True,
|
|
)
|
|
|
|
state = hass.states.get("light.bed_light")
|
|
assert state.state == "on"
|
|
assert state.attributes["brightness"] == 50
|