Fix lying docstring for relative_time template function (#116146)

* Fix lying docstring for relative_time template function

* Update homeassistant/helpers/template.py

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>

---------

Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
This commit is contained in:
Erik Montnemery 2024-04-25 13:01:41 +02:00 committed by Paulus Schoutsen
parent c8d025f525
commit 18f1c0c9f3
2 changed files with 34 additions and 1 deletions

View File

@ -2476,7 +2476,8 @@ def relative_time(hass: HomeAssistant, value: Any) -> Any:
The age can be in second, minute, hour, day, month or year. Only the The age can be in second, minute, hour, day, month or year. Only the
biggest unit is considered, e.g. if it's 2 days and 3 hours, "2 days" will biggest unit is considered, e.g. if it's 2 days and 3 hours, "2 days" will
be returned. be returned.
Make sure date is not in the future, or else it will return None. If the input datetime is in the future,
the input datetime will be returned.
If the input are not a datetime object the input will be returned unmodified. If the input are not a datetime object the input will be returned unmodified.

View File

@ -2303,6 +2303,38 @@ def test_relative_time(mock_is_safe, hass: HomeAssistant) -> None:
).async_render() ).async_render()
assert result == "string" assert result == "string"
# Test behavior when current time is same as the input time
result = template.Template(
(
"{{"
" relative_time("
" strptime("
' "2000-01-01 10:00:00 +00:00",'
' "%Y-%m-%d %H:%M:%S %z"'
" )"
" )"
"}}"
),
hass,
).async_render()
assert result == "0 seconds"
# Test behavior when the input time is in the future
result = template.Template(
(
"{{"
" relative_time("
" strptime("
' "2000-01-01 11:00:00 +00:00",'
' "%Y-%m-%d %H:%M:%S %z"'
" )"
" )"
"}}"
),
hass,
).async_render()
assert result == "2000-01-01 11:00:00+00:00"
info = template.Template(relative_time_template, hass).async_render_to_info() info = template.Template(relative_time_template, hass).async_render_to_info()
assert info.has_time is True assert info.has_time is True