mirror of
https://github.com/home-assistant/core.git
synced 2025-07-09 14:27:07 +00:00
Add additional test cover for history_stats (#71648)
This commit is contained in:
parent
2d5a82d10e
commit
1304808f89
@ -1387,3 +1387,85 @@ async def test_measure_cet(hass, recorder_mock):
|
|||||||
assert hass.states.get("sensor.sensor2").state == "0.83"
|
assert hass.states.get("sensor.sensor2").state == "0.83"
|
||||||
assert hass.states.get("sensor.sensor3").state == "1"
|
assert hass.states.get("sensor.sensor3").state == "1"
|
||||||
assert hass.states.get("sensor.sensor4").state == "83.3"
|
assert hass.states.get("sensor.sensor4").state == "83.3"
|
||||||
|
|
||||||
|
|
||||||
|
async def test_end_time_with_microseconds_zeroed(hass, recorder_mock):
|
||||||
|
"""Test the history statistics sensor that has the end time microseconds zeroed out."""
|
||||||
|
hass.config.set_time_zone("Europe/Berlin")
|
||||||
|
start_of_today = dt_util.now().replace(hour=0, minute=0, second=0, microsecond=0)
|
||||||
|
start_time = start_of_today + timedelta(minutes=60)
|
||||||
|
t0 = start_time + timedelta(minutes=20)
|
||||||
|
t1 = t0 + timedelta(minutes=10)
|
||||||
|
t2 = t1 + timedelta(minutes=10)
|
||||||
|
time_200 = start_of_today + timedelta(hours=2)
|
||||||
|
|
||||||
|
def _fake_states(*args, **kwargs):
|
||||||
|
return {
|
||||||
|
"binary_sensor.heatpump_compressor_state": [
|
||||||
|
ha.State(
|
||||||
|
"binary_sensor.heatpump_compressor_state", "on", last_changed=t0
|
||||||
|
),
|
||||||
|
ha.State(
|
||||||
|
"binary_sensor.heatpump_compressor_state",
|
||||||
|
"off",
|
||||||
|
last_changed=t1,
|
||||||
|
),
|
||||||
|
ha.State(
|
||||||
|
"binary_sensor.heatpump_compressor_state", "on", last_changed=t2
|
||||||
|
),
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
with freeze_time(time_200), patch(
|
||||||
|
"homeassistant.components.recorder.history.state_changes_during_period",
|
||||||
|
_fake_states,
|
||||||
|
):
|
||||||
|
await async_setup_component(
|
||||||
|
hass,
|
||||||
|
"sensor",
|
||||||
|
{
|
||||||
|
"sensor": [
|
||||||
|
{
|
||||||
|
"platform": "history_stats",
|
||||||
|
"entity_id": "binary_sensor.heatpump_compressor_state",
|
||||||
|
"name": "heatpump_compressor_today",
|
||||||
|
"state": "on",
|
||||||
|
"start": "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}",
|
||||||
|
"end": "{{ now().replace(microsecond=0) }}",
|
||||||
|
"type": "time",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
|
)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
await async_update_entity(hass, "sensor.heatpump_compressor_today")
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert hass.states.get("sensor.heatpump_compressor_today").state == "1.83"
|
||||||
|
async_fire_time_changed(hass, time_200)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert hass.states.get("sensor.heatpump_compressor_today").state == "1.83"
|
||||||
|
hass.states.async_set("binary_sensor.heatpump_compressor_state", "off")
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
|
||||||
|
time_400 = start_of_today + timedelta(hours=4)
|
||||||
|
with freeze_time(time_400):
|
||||||
|
async_fire_time_changed(hass, time_400)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert hass.states.get("sensor.heatpump_compressor_today").state == "1.83"
|
||||||
|
hass.states.async_set("binary_sensor.heatpump_compressor_state", "on")
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
time_600 = start_of_today + timedelta(hours=6)
|
||||||
|
with freeze_time(time_600):
|
||||||
|
async_fire_time_changed(hass, time_600)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert hass.states.get("sensor.heatpump_compressor_today").state == "3.83"
|
||||||
|
rolled_to_next_day = start_of_today + timedelta(days=1)
|
||||||
|
assert rolled_to_next_day.hour == 0
|
||||||
|
assert rolled_to_next_day.minute == 0
|
||||||
|
assert rolled_to_next_day.second == 0
|
||||||
|
assert rolled_to_next_day.microsecond == 0
|
||||||
|
|
||||||
|
with freeze_time(rolled_to_next_day):
|
||||||
|
async_fire_time_changed(hass, rolled_to_next_day)
|
||||||
|
await hass.async_block_till_done()
|
||||||
|
assert hass.states.get("sensor.heatpump_compressor_today").state == "0.0"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user