Improve saved state of RestoreSensor when using freezegun (#152740)

This commit is contained in:
Erik Montnemery
2025-09-30 18:27:56 +02:00
committed by GitHub
parent d7269cfcc6
commit 7f63ba2087
6 changed files with 104 additions and 22 deletions

View File

@@ -8,6 +8,7 @@ from decimal import Decimal
from typing import Any
from unittest.mock import patch
from freezegun.api import freeze_time
import pytest
from homeassistant.components import sensor
@@ -475,6 +476,62 @@ async def test_restore_sensor_save_state(
assert type(extra_data["native_value"]) is native_value_type
@freeze_time("2020-02-08 15:00:00")
async def test_restore_sensor_save_state_frozen_time_datetime(
hass: HomeAssistant,
hass_storage: dict[str, Any],
) -> None:
"""Test RestoreSensor."""
entity0 = MockRestoreSensor(
name="Test",
native_value=dt_util.utcnow(),
native_unit_of_measurement=None,
device_class=SensorDeviceClass.TIMESTAMP,
)
setup_test_component_platform(hass, sensor.DOMAIN, [entity0])
assert await async_setup_component(hass, "sensor", {"sensor": {"platform": "test"}})
await hass.async_block_till_done()
# Trigger saving state
await async_mock_restore_state_shutdown_restart(hass)
assert len(hass_storage[RESTORE_STATE_KEY]["data"]) == 1
state = hass_storage[RESTORE_STATE_KEY]["data"][0]["state"]
assert state["entity_id"] == entity0.entity_id
extra_data = hass_storage[RESTORE_STATE_KEY]["data"][0]["extra_data"]
assert extra_data == RESTORE_DATA["datetime"]
assert type(extra_data["native_value"]) is dict
@freeze_time("2020-02-08 15:00:00")
async def test_restore_sensor_save_state_frozen_time_date(
hass: HomeAssistant,
hass_storage: dict[str, Any],
) -> None:
"""Test RestoreSensor."""
entity0 = MockRestoreSensor(
name="Test",
native_value=dt_util.utcnow().date(),
native_unit_of_measurement=None,
device_class=SensorDeviceClass.DATE,
)
setup_test_component_platform(hass, sensor.DOMAIN, [entity0])
assert await async_setup_component(hass, "sensor", {"sensor": {"platform": "test"}})
await hass.async_block_till_done()
# Trigger saving state
await async_mock_restore_state_shutdown_restart(hass)
assert len(hass_storage[RESTORE_STATE_KEY]["data"]) == 1
state = hass_storage[RESTORE_STATE_KEY]["data"][0]["state"]
assert state["entity_id"] == entity0.entity_id
extra_data = hass_storage[RESTORE_STATE_KEY]["data"][0]["extra_data"]
assert extra_data == RESTORE_DATA["date"]
assert type(extra_data["native_value"]) is dict
@pytest.mark.parametrize(
("native_value", "native_value_type", "extra_data", "device_class", "uom"),
[