77 lines
2.9 KiB
Python
77 lines
2.9 KiB
Python
"""The tests for the Template Weather platform."""
|
|
from homeassistant.components.weather import (
|
|
ATTR_WEATHER_ATTRIBUTION,
|
|
ATTR_WEATHER_HUMIDITY,
|
|
ATTR_WEATHER_OZONE,
|
|
ATTR_WEATHER_PRESSURE,
|
|
ATTR_WEATHER_TEMPERATURE,
|
|
ATTR_WEATHER_VISIBILITY,
|
|
ATTR_WEATHER_WIND_BEARING,
|
|
ATTR_WEATHER_WIND_SPEED,
|
|
DOMAIN,
|
|
)
|
|
from homeassistant.setup import async_setup_component
|
|
|
|
|
|
async def test_template_state_text(hass):
|
|
"""Test the state text of a template."""
|
|
await async_setup_component(
|
|
hass,
|
|
DOMAIN,
|
|
{
|
|
"weather": [
|
|
{"weather": {"platform": "demo"}},
|
|
{
|
|
"platform": "template",
|
|
"name": "test",
|
|
"attribution_template": "{{ states('sensor.attribution') }}",
|
|
"condition_template": "sunny",
|
|
"forecast_template": "{{ states.weather.demo.attributes.forecast }}",
|
|
"temperature_template": "{{ states('sensor.temperature') | float }}",
|
|
"humidity_template": "{{ states('sensor.humidity') | int }}",
|
|
"pressure_template": "{{ states('sensor.pressure') }}",
|
|
"wind_speed_template": "{{ states('sensor.windspeed') }}",
|
|
"wind_bearing_template": "{{ states('sensor.windbearing') }}",
|
|
"ozone_template": "{{ states('sensor.ozone') }}",
|
|
"visibility_template": "{{ states('sensor.visibility') }}",
|
|
},
|
|
]
|
|
},
|
|
)
|
|
await hass.async_block_till_done()
|
|
|
|
await hass.async_start()
|
|
await hass.async_block_till_done()
|
|
|
|
hass.states.async_set("sensor.attribution", "The custom attribution")
|
|
await hass.async_block_till_done()
|
|
hass.states.async_set("sensor.temperature", 22.3)
|
|
await hass.async_block_till_done()
|
|
hass.states.async_set("sensor.humidity", 60)
|
|
await hass.async_block_till_done()
|
|
hass.states.async_set("sensor.pressure", 1000)
|
|
await hass.async_block_till_done()
|
|
hass.states.async_set("sensor.windspeed", 20)
|
|
await hass.async_block_till_done()
|
|
hass.states.async_set("sensor.windbearing", 180)
|
|
await hass.async_block_till_done()
|
|
hass.states.async_set("sensor.ozone", 25)
|
|
await hass.async_block_till_done()
|
|
hass.states.async_set("sensor.visibility", 4.6)
|
|
await hass.async_block_till_done()
|
|
|
|
state = hass.states.get("weather.test")
|
|
assert state is not None
|
|
|
|
assert state.state == "sunny"
|
|
|
|
data = state.attributes
|
|
assert data.get(ATTR_WEATHER_ATTRIBUTION) == "The custom attribution"
|
|
assert data.get(ATTR_WEATHER_TEMPERATURE) == 22.3
|
|
assert data.get(ATTR_WEATHER_HUMIDITY) == 60
|
|
assert data.get(ATTR_WEATHER_PRESSURE) == 1000
|
|
assert data.get(ATTR_WEATHER_WIND_SPEED) == 20
|
|
assert data.get(ATTR_WEATHER_WIND_BEARING) == 180
|
|
assert data.get(ATTR_WEATHER_OZONE) == 25
|
|
assert data.get(ATTR_WEATHER_VISIBILITY) == 4.6
|