diff --git a/homeassistant/components/recorder/statistics.py b/homeassistant/components/recorder/statistics.py index fcd8e4f393002dd658663ba7f957765b23b32100..1b0a4e64897f43a6c3afedd829eb038204bb4558 100644 --- a/homeassistant/components/recorder/statistics.py +++ b/homeassistant/components/recorder/statistics.py @@ -267,12 +267,14 @@ def _update_or_add_metadata( if ( old_metadata["has_mean"] != new_metadata["has_mean"] or old_metadata["has_sum"] != new_metadata["has_sum"] + or old_metadata["name"] != new_metadata["name"] or old_metadata["unit_of_measurement"] != new_metadata["unit_of_measurement"] ): session.query(StatisticsMeta).filter_by(statistic_id=statistic_id).update( { StatisticsMeta.has_mean: new_metadata["has_mean"], StatisticsMeta.has_sum: new_metadata["has_sum"], + StatisticsMeta.name: new_metadata["name"], StatisticsMeta.unit_of_measurement: new_metadata["unit_of_measurement"], }, synchronize_session=False, diff --git a/tests/components/recorder/test_statistics.py b/tests/components/recorder/test_statistics.py index 8db4587f1cfd25b1888d514b90a08d55613c1182..5bc8aa76a000ee7da85c4f9a9fece2e050c99b27 100644 --- a/tests/components/recorder/test_statistics.py +++ b/tests/components/recorder/test_statistics.py @@ -161,6 +161,7 @@ def mock_sensor_statistics(): "unit_of_measurement": "dogs", "has_mean": True, "has_sum": False, + "name": None, }, "stat": {"start": start}, } @@ -599,7 +600,7 @@ async def test_import_statistics( ] } - # Update the previously inserted statistics + # Update the previously inserted statistics + rename external_statistics = { "start": period1, "max": 1, @@ -609,8 +610,34 @@ async def test_import_statistics( "state": 4, "sum": 5, } + external_metadata["name"] = "Total imported energy renamed" import_fn(hass, external_metadata, (external_statistics,)) await async_wait_recording_done(hass) + statistic_ids = list_statistic_ids(hass) + assert statistic_ids == [ + { + "has_mean": False, + "has_sum": True, + "statistic_id": statistic_id, + "name": "Total imported energy renamed", + "source": source, + "unit_of_measurement": "kWh", + } + ] + metadata = get_metadata(hass, statistic_ids=(statistic_id,)) + assert metadata == { + statistic_id: ( + 1, + { + "has_mean": False, + "has_sum": True, + "name": "Total imported energy renamed", + "source": source, + "statistic_id": statistic_id, + "unit_of_measurement": "kWh", + }, + ) + } stats = statistics_during_period(hass, zero, period="hour") assert stats == { statistic_id: [ @@ -639,6 +666,7 @@ async def test_import_statistics( ] } + # Adjust the statistics await client.send_json( { "id": 1,