Correct state restoring for Utility Meter sensors (#66851)
* fix merge * backward compatability * add status * increase coverage * increase further the coverage * adds support for Decimal in SensorExtraStoredData * more precise * review * don't restore broken last_reset * increase coverage * address review comments * stale * coverage increase * Update homeassistant/components/utility_meter/sensor.py Co-authored-by: Erik Montnemery <erik@montnemery.com> * catch corrupt files and respective tests Co-authored-by: Erik Montnemery <erik@montnemery.com>
This commit is contained in:
parent
9dfd37c60b
commit
03874d1b65
4 changed files with 201 additions and 31 deletions
|
@ -1,5 +1,6 @@
|
|||
"""The test for sensor entity."""
|
||||
from datetime import date, datetime, timezone
|
||||
from decimal import Decimal
|
||||
|
||||
import pytest
|
||||
from pytest import approx
|
||||
|
@ -227,10 +228,24 @@ RESTORE_DATA = {
|
|||
"isoformat": datetime(2020, 2, 8, 15, tzinfo=timezone.utc).isoformat(),
|
||||
},
|
||||
},
|
||||
"Decimal": {
|
||||
"native_unit_of_measurement": "°F",
|
||||
"native_value": {
|
||||
"__type": "<class 'decimal.Decimal'>",
|
||||
"decimal_str": "123.4",
|
||||
},
|
||||
},
|
||||
"BadDecimal": {
|
||||
"native_unit_of_measurement": "°F",
|
||||
"native_value": {
|
||||
"__type": "<class 'decimal.Decimal'>",
|
||||
"decimal_str": "123f",
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
# None | str | int | float | date | datetime:
|
||||
# None | str | int | float | date | datetime | Decimal:
|
||||
@pytest.mark.parametrize(
|
||||
"native_value, native_value_type, expected_extra_data, device_class",
|
||||
[
|
||||
|
@ -244,6 +259,7 @@ RESTORE_DATA = {
|
|||
RESTORE_DATA["datetime"],
|
||||
SensorDeviceClass.TIMESTAMP,
|
||||
),
|
||||
(Decimal("123.4"), dict, RESTORE_DATA["Decimal"], SensorDeviceClass.ENERGY),
|
||||
],
|
||||
)
|
||||
async def test_restore_sensor_save_state(
|
||||
|
@ -294,6 +310,13 @@ async def test_restore_sensor_save_state(
|
|||
SensorDeviceClass.TIMESTAMP,
|
||||
"°F",
|
||||
),
|
||||
(
|
||||
Decimal("123.4"),
|
||||
Decimal,
|
||||
RESTORE_DATA["Decimal"],
|
||||
SensorDeviceClass.ENERGY,
|
||||
"°F",
|
||||
),
|
||||
(None, type(None), None, None, None),
|
||||
(None, type(None), {}, None, None),
|
||||
(None, type(None), {"beer": 123}, None, None),
|
||||
|
@ -304,6 +327,7 @@ async def test_restore_sensor_save_state(
|
|||
None,
|
||||
None,
|
||||
),
|
||||
(None, type(None), RESTORE_DATA["BadDecimal"], SensorDeviceClass.ENERGY, None),
|
||||
],
|
||||
)
|
||||
async def test_restore_sensor_restore_state(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue