Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions tests/components/template/test_init.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
"""The test for the Template sensor platform."""
from datetime import timedelta
from os import path
from unittest.mock import patch

from homeassistant import config
from homeassistant.components.template import DOMAIN, SERVICE_RELOAD
from homeassistant.setup import async_setup_component
from homeassistant.util import dt as dt_util

from tests.common import async_fire_time_changed


async def test_reloadable(hass):
Expand Down Expand Up @@ -253,5 +257,50 @@ async def test_reloadable_multiple_platforms(hass):
assert float(hass.states.get("sensor.combined_sensor_energy_usage").state) == 0


async def test_reload_sensors_that_reference_other_template_sensors(hass):
"""Test that we can reload sensor that reference other template sensors."""

await async_setup_component(
hass,
"sensor",
{
"sensor": {
"platform": DOMAIN,
"sensors": {
"state": {"value_template": "{{ 1 }}"},
},
}
},
)
await hass.async_block_till_done()
yaml_path = path.join(
_get_fixtures_base_path(),
"fixtures",
"template/ref_configuration.yaml",
)
with patch.object(config, "YAML_CONFIG_FILE", yaml_path):
await hass.services.async_call(
DOMAIN,
SERVICE_RELOAD,
{},
blocking=True,
)
await hass.async_block_till_done()

assert len(hass.states.async_all()) == 3
await hass.async_block_till_done()

next_time = dt_util.utcnow() + timedelta(seconds=1.2)
with patch(
"homeassistant.helpers.ratelimit.dt_util.utcnow", return_value=next_time
):
async_fire_time_changed(hass, next_time)
await hass.async_block_till_done()

assert hass.states.get("sensor.test1").state == "3"
assert hass.states.get("sensor.test2").state == "1"
assert hass.states.get("sensor.test3").state == "2"


def _get_fixtures_base_path():
return path.dirname(path.dirname(path.dirname(__file__)))
9 changes: 9 additions & 0 deletions tests/fixtures/template/ref_configuration.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
sensor:
- platform: template
sensors:
test1:
value_template: "{{ (states.sensor.test2.state |int) + (states.sensor.test3.state |int)}}"
test2:
value_template: "{{ 1 }}"
test3:
value_template: "{{ 2 }}"