From eaf5350aa11a6e2712adad728d7a121a0adc8030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Hjelseth=20H=C3=B8yer?= Date: Fri, 21 Mar 2025 05:42:07 +0100 Subject: [PATCH] Add test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Daniel Hjelseth Høyer --- homeassistant/components/mill/coordinator.py | 4 +-- tests/components/mill/test_coordinator.py | 36 ++++++++++++++++++-- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/homeassistant/components/mill/coordinator.py b/homeassistant/components/mill/coordinator.py index b49df121b30..faaf191b080 100644 --- a/homeassistant/components/mill/coordinator.py +++ b/homeassistant/components/mill/coordinator.py @@ -88,7 +88,6 @@ class MillHistoricDataUpdateCoordinator(DataUpdateCoordinator): last_stats = await recoder_instance.async_add_executor_job( get_last_statistics, self.hass, 1, statistic_id, True, set() ) - if not last_stats or not last_stats.get(statistic_id): hourly_data = ( await self.mill_data_connection.fetch_historic_energy_usage( @@ -115,7 +114,6 @@ class MillHistoricDataUpdateCoordinator(DataUpdateCoordinator): continue hourly_data = dict(sorted(hourly_data.items(), key=lambda x: x[0])) start_time = next(iter(hourly_data)) - stats = await recoder_instance.async_add_executor_job( statistics_during_period, self.hass, @@ -128,7 +126,7 @@ class MillHistoricDataUpdateCoordinator(DataUpdateCoordinator): ) stat = stats[statistic_id][0] - _sum = cast(float, stat["sum"]) + _sum = cast(float, stat["sum"]) - cast(float, stat["state"]) last_stats_time = dt_util.utc_from_timestamp(stat["start"]) statistics = [] diff --git a/tests/components/mill/test_coordinator.py b/tests/components/mill/test_coordinator.py index 7afa6499aaa..74e38eeef68 100644 --- a/tests/components/mill/test_coordinator.py +++ b/tests/components/mill/test_coordinator.py @@ -14,8 +14,8 @@ from homeassistant.util import dt as dt_util from tests.components.recorder.common import async_wait_recording_done -async def test_async_setup_entry(recorder_mock: Recorder, hass: HomeAssistant) -> None: - """Test setup Mill.""" +async def test_mill_historic_data(recorder_mock: Recorder, hass: HomeAssistant) -> None: + """Test historic data from Mill.""" data = { dt_util.parse_datetime("2024-12-03T00:00:00+01:00"): 2, @@ -57,3 +57,35 @@ async def test_async_setup_entry(recorder_mock: Recorder, hass: HomeAssistant) - _sum += data[start] assert stat["sum"] == _sum + + data2 = { + dt_util.parse_datetime("2024-12-03T02:00:00+01:00"): 4.5, + dt_util.parse_datetime("2024-12-03T03:00:00+01:00"): 5, + dt_util.parse_datetime("2024-12-03T04:00:00+01:00"): 6, + dt_util.parse_datetime("2024-12-03T05:00:00+01:00"): 7, + } + mill_data_connection.fetch_historic_energy_usage = AsyncMock(return_value=data2) + await coordinator._async_update_data() + await async_wait_recording_done(hass) + stats = await hass.async_add_executor_job( + statistics_during_period, + hass, + next(iter(data)), + None, + {statistic_id}, + "hour", + None, + {"start", "state", "mean", "min", "max", "last_reset", "sum"}, + ) + assert len(stats) == 1 + assert len(stats[statistic_id]) == 6 + _sum = 0 + for stat in stats[statistic_id]: + start = dt_util.utc_from_timestamp(stat["start"]) + val = data2.get(start) if start in data2 else data.get(start) + assert val is not None + assert stat["state"] == val + assert stat["last_reset"] is None + + _sum += val + assert stat["sum"] == _sum