Migrate time_date tests to use freezegun (#105409)

This commit is contained in:
Jan-Philipp Benecke 2023-12-09 21:35:52 +01:00 committed by GitHub
parent a0bf170fb4
commit a090bcb8a5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,29 +1,30 @@
"""The tests for time_date sensor platform.""" """The tests for time_date sensor platform."""
from unittest.mock import patch
from freezegun.api import FrozenDateTimeFactory
import homeassistant.components.time_date.sensor as time_date import homeassistant.components.time_date.sensor as time_date
from homeassistant.core import HomeAssistant from homeassistant.core import HomeAssistant
import homeassistant.util.dt as dt_util import homeassistant.util.dt as dt_util
async def test_intervals(hass: HomeAssistant) -> None: async def test_intervals(hass: HomeAssistant, freezer: FrozenDateTimeFactory) -> None:
"""Test timing intervals of sensors.""" """Test timing intervals of sensors."""
device = time_date.TimeDateSensor(hass, "time") device = time_date.TimeDateSensor(hass, "time")
now = dt_util.utc_from_timestamp(45.5) now = dt_util.utc_from_timestamp(45.5)
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time == dt_util.utc_from_timestamp(60) assert next_time == dt_util.utc_from_timestamp(60)
device = time_date.TimeDateSensor(hass, "beat") device = time_date.TimeDateSensor(hass, "beat")
now = dt_util.parse_datetime("2020-11-13 00:00:29+01:00") now = dt_util.parse_datetime("2020-11-13 00:00:29+01:00")
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time == dt_util.parse_datetime("2020-11-13 00:01:26.4+01:00") assert next_time == dt_util.parse_datetime("2020-11-13 00:01:26.4+01:00")
device = time_date.TimeDateSensor(hass, "date_time") device = time_date.TimeDateSensor(hass, "date_time")
now = dt_util.utc_from_timestamp(1495068899) now = dt_util.utc_from_timestamp(1495068899)
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time == dt_util.utc_from_timestamp(1495068900) assert next_time == dt_util.utc_from_timestamp(1495068900)
now = dt_util.utcnow() now = dt_util.utcnow()
@ -102,14 +103,16 @@ async def test_states_non_default_timezone(hass: HomeAssistant) -> None:
assert device.state == "2017-05-17T20:54:00" assert device.state == "2017-05-17T20:54:00"
async def test_timezone_intervals(hass: HomeAssistant) -> None: async def test_timezone_intervals(
hass: HomeAssistant, freezer: FrozenDateTimeFactory
) -> None:
"""Test date sensor behavior in a timezone besides UTC.""" """Test date sensor behavior in a timezone besides UTC."""
hass.config.set_time_zone("America/New_York") hass.config.set_time_zone("America/New_York")
device = time_date.TimeDateSensor(hass, "date") device = time_date.TimeDateSensor(hass, "date")
now = dt_util.utc_from_timestamp(50000) now = dt_util.utc_from_timestamp(50000)
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
# start of local day in EST was 18000.0 # start of local day in EST was 18000.0
# so the second day was 18000 + 86400 # so the second day was 18000 + 86400
assert next_time.timestamp() == 104400 assert next_time.timestamp() == 104400
@ -117,43 +120,40 @@ async def test_timezone_intervals(hass: HomeAssistant) -> None:
hass.config.set_time_zone("America/Edmonton") hass.config.set_time_zone("America/Edmonton")
now = dt_util.parse_datetime("2017-11-13 19:47:19-07:00") now = dt_util.parse_datetime("2017-11-13 19:47:19-07:00")
device = time_date.TimeDateSensor(hass, "date") device = time_date.TimeDateSensor(hass, "date")
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time.timestamp() == dt_util.as_timestamp("2017-11-14 00:00:00-07:00") assert next_time.timestamp() == dt_util.as_timestamp("2017-11-14 00:00:00-07:00")
# Entering DST # Entering DST
hass.config.set_time_zone("Europe/Prague") hass.config.set_time_zone("Europe/Prague")
now = dt_util.parse_datetime("2020-03-29 00:00+01:00") now = dt_util.parse_datetime("2020-03-29 00:00+01:00")
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time.timestamp() == dt_util.as_timestamp("2020-03-30 00:00+02:00") assert next_time.timestamp() == dt_util.as_timestamp("2020-03-30 00:00+02:00")
now = dt_util.parse_datetime("2020-03-29 03:00+02:00") now = dt_util.parse_datetime("2020-03-29 03:00+02:00")
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time.timestamp() == dt_util.as_timestamp("2020-03-30 00:00+02:00") assert next_time.timestamp() == dt_util.as_timestamp("2020-03-30 00:00+02:00")
# Leaving DST # Leaving DST
now = dt_util.parse_datetime("2020-10-25 00:00+02:00") now = dt_util.parse_datetime("2020-10-25 00:00+02:00")
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time.timestamp() == dt_util.as_timestamp("2020-10-26 00:00:00+01:00") assert next_time.timestamp() == dt_util.as_timestamp("2020-10-26 00:00:00+01:00")
now = dt_util.parse_datetime("2020-10-25 23:59+01:00") now = dt_util.parse_datetime("2020-10-25 23:59+01:00")
with patch("homeassistant.util.dt.utcnow", return_value=now): freezer.move_to(now)
next_time = device.get_next_interval() next_time = device.get_next_interval()
assert next_time.timestamp() == dt_util.as_timestamp("2020-10-26 00:00:00+01:00") assert next_time.timestamp() == dt_util.as_timestamp("2020-10-26 00:00:00+01:00")
@patch(
"homeassistant.util.dt.utcnow",
return_value=dt_util.parse_datetime("2017-11-14 02:47:19-00:00"),
)
async def test_timezone_intervals_empty_parameter( async def test_timezone_intervals_empty_parameter(
utcnow_mock, hass: HomeAssistant hass: HomeAssistant, freezer: FrozenDateTimeFactory
) -> None: ) -> None:
"""Test get_interval() without parameters.""" """Test get_interval() without parameters."""
freezer.move_to(dt_util.parse_datetime("2017-11-14 02:47:19-00:00"))
hass.config.set_time_zone("America/Edmonton") hass.config.set_time_zone("America/Edmonton")
device = time_date.TimeDateSensor(hass, "date") device = time_date.TimeDateSensor(hass, "date")
next_time = device.get_next_interval() next_time = device.get_next_interval()