Skip to content

Commit

Permalink
Migrate time_date tests to use freezegun (home-assistant#105409)
Browse files Browse the repository at this point in the history
  • Loading branch information
jpbede authored Dec 9, 2023
1 parent a0bf170 commit a090bcb
Showing 1 changed file with 26 additions and 26 deletions.
52 changes: 26 additions & 26 deletions tests/components/time_date/test_sensor.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
"""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
from homeassistant.core import HomeAssistant
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."""
device = time_date.TimeDateSensor(hass, "time")
now = dt_util.utc_from_timestamp(45.5)
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
assert next_time == dt_util.utc_from_timestamp(60)

device = time_date.TimeDateSensor(hass, "beat")
now = dt_util.parse_datetime("2020-11-13 00:00:29+01:00")
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
assert next_time == dt_util.parse_datetime("2020-11-13 00:01:26.4+01:00")

device = time_date.TimeDateSensor(hass, "date_time")
now = dt_util.utc_from_timestamp(1495068899)
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
assert next_time == dt_util.utc_from_timestamp(1495068900)

now = dt_util.utcnow()
Expand Down Expand Up @@ -102,58 +103,57 @@ async def test_states_non_default_timezone(hass: HomeAssistant) -> None:
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."""
hass.config.set_time_zone("America/New_York")

device = time_date.TimeDateSensor(hass, "date")
now = dt_util.utc_from_timestamp(50000)
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
# start of local day in EST was 18000.0
# so the second day was 18000 + 86400
assert next_time.timestamp() == 104400

hass.config.set_time_zone("America/Edmonton")
now = dt_util.parse_datetime("2017-11-13 19:47:19-07:00")
device = time_date.TimeDateSensor(hass, "date")
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
assert next_time.timestamp() == dt_util.as_timestamp("2017-11-14 00:00:00-07:00")

# Entering DST
hass.config.set_time_zone("Europe/Prague")

now = dt_util.parse_datetime("2020-03-29 00:00+01:00")
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
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")
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
assert next_time.timestamp() == dt_util.as_timestamp("2020-03-30 00:00+02:00")

# Leaving DST
now = dt_util.parse_datetime("2020-10-25 00:00+02:00")
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
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")
with patch("homeassistant.util.dt.utcnow", return_value=now):
next_time = device.get_next_interval()
freezer.move_to(now)
next_time = device.get_next_interval()
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(
utcnow_mock, hass: HomeAssistant
hass: HomeAssistant, freezer: FrozenDateTimeFactory
) -> None:
"""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")
device = time_date.TimeDateSensor(hass, "date")
next_time = device.get_next_interval()
Expand Down

0 comments on commit a090bcb

Please sign in to comment.