mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 15:17:35 +00:00
Mock time_date sensor tests (#43141)
This commit is contained in:
parent
76b843118b
commit
e0f1d0ab20
@ -80,7 +80,7 @@ class TimeDateSensor(Entity):
|
|||||||
return "mdi:clock"
|
return "mdi:clock"
|
||||||
|
|
||||||
async def async_added_to_hass(self) -> None:
|
async def async_added_to_hass(self) -> None:
|
||||||
"""Set up next update."""
|
"""Set up first update."""
|
||||||
self.unsub = async_track_point_in_utc_time(
|
self.unsub = async_track_point_in_utc_time(
|
||||||
self.hass, self.point_in_time_listener, self.get_next_interval()
|
self.hass, self.point_in_time_listener, self.get_next_interval()
|
||||||
)
|
)
|
||||||
@ -91,20 +91,24 @@ class TimeDateSensor(Entity):
|
|||||||
self.unsub()
|
self.unsub()
|
||||||
self.unsub = None
|
self.unsub = None
|
||||||
|
|
||||||
def get_next_interval(self, now=None):
|
def get_next_interval(self):
|
||||||
"""Compute next time an update should occur."""
|
"""Compute next time an update should occur."""
|
||||||
if now is None:
|
|
||||||
now = dt_util.utcnow()
|
now = dt_util.utcnow()
|
||||||
|
|
||||||
if self.type == "date":
|
if self.type == "date":
|
||||||
now = dt_util.start_of_local_day(dt_util.as_local(now))
|
now = dt_util.start_of_local_day(dt_util.as_local(now))
|
||||||
return now + timedelta(seconds=86400)
|
return now + timedelta(seconds=86400)
|
||||||
|
|
||||||
if self.type == "beat":
|
if self.type == "beat":
|
||||||
interval = 86.4
|
interval = 86.4
|
||||||
else:
|
else:
|
||||||
interval = 60
|
interval = 60
|
||||||
timestamp = int(dt_util.as_timestamp(now))
|
timestamp = int(dt_util.as_timestamp(now))
|
||||||
delta = interval - (timestamp % interval)
|
delta = interval - (timestamp % interval)
|
||||||
return now + timedelta(seconds=delta)
|
next_interval = now + timedelta(seconds=delta)
|
||||||
|
_LOGGER.debug("%s + %s -> %s (%s)", now, delta, next_interval, self.type)
|
||||||
|
|
||||||
|
return next_interval
|
||||||
|
|
||||||
def _update_internal_state(self, time_date):
|
def _update_internal_state(self, time_date):
|
||||||
time = dt_util.as_local(time_date).strftime(TIME_STR_FORMAT)
|
time = dt_util.as_local(time_date).strftime(TIME_STR_FORMAT)
|
||||||
|
@ -21,17 +21,20 @@ async def test_intervals(hass):
|
|||||||
"""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)
|
now = dt_util.utc_from_timestamp(45)
|
||||||
next_time = device.get_next_interval(now)
|
with patch("homeassistant.util.dt.utcnow", return_value=now):
|
||||||
|
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.utc_from_timestamp(29)
|
now = dt_util.utc_from_timestamp(29)
|
||||||
next_time = device.get_next_interval(now)
|
with patch("homeassistant.util.dt.utcnow", return_value=now):
|
||||||
|
next_time = device.get_next_interval()
|
||||||
assert next_time == dt_util.utc_from_timestamp(86.4)
|
assert next_time == dt_util.utc_from_timestamp(86.4)
|
||||||
|
|
||||||
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)
|
||||||
next_time = device.get_next_interval(now)
|
with patch("homeassistant.util.dt.utcnow", return_value=now):
|
||||||
|
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()
|
||||||
@ -117,7 +120,8 @@ async def test_timezone_intervals(hass):
|
|||||||
|
|
||||||
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)
|
||||||
next_time = device.get_next_interval(now)
|
with patch("homeassistant.util.dt.utcnow", return_value=now):
|
||||||
|
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
|
||||||
@ -127,7 +131,8 @@ async def test_timezone_intervals(hass):
|
|||||||
dt_util.set_default_time_zone(new_tz)
|
dt_util.set_default_time_zone(new_tz)
|
||||||
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")
|
||||||
next_time = device.get_next_interval(now)
|
with patch("homeassistant.util.dt.utcnow", return_value=now):
|
||||||
|
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")
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user