From acdc4024ebc7c3da5cf94b54a5d3977df853c37c Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Tue, 9 Feb 2021 21:18:22 +0100
Subject: [PATCH] SensorLineChartTile: added tests for
 prepare_measurement_data()

---
 src/logic/tile/tiles/SensorLineChartTile.py   |  4 +--
 .../tile/tiles/TestSensorLineChartTile.py     | 30 +++++++++++++++++++
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/src/logic/tile/tiles/SensorLineChartTile.py b/src/logic/tile/tiles/SensorLineChartTile.py
index dbfe0f1..dbd5c72 100644
--- a/src/logic/tile/tiles/SensorLineChartTile.py
+++ b/src/logic/tile/tiles/SensorLineChartTile.py
@@ -71,7 +71,7 @@ class SensorLineChartTile(Tile):
         cacheKey = f'{pageName}_{self._uniqueName}_all'
         sensorData = storageLeafService.get_data(cacheKey, self._intervalInSeconds, serviceSettings)
 
-        x, y = self.__prepare_measurement_data(sensorData['sensorValue'])
+        x, y = self._prepare_measurement_data(sensorData['sensorValue'])
         latestTime = datetime.strptime(x[-1], self.DATE_FORMAT) if x else self.DATETIME_UNIX_TIMESTAMP_START
         latestValue = y[-1] if y else ''
 
@@ -134,7 +134,7 @@ class SensorLineChartTile(Tile):
         LOGGER.debug(f'Received min/max: {minMaxData} for sensorIDs: {self._settings["sensorIDsForMinMax"]}')
         return minMaxData.get('min', 0) or 0, minMaxData.get('max', 0) or 0
 
-    def __prepare_measurement_data(self, measurements: List[Dict]) -> Tuple[List[str], List[str]]:
+    def _prepare_measurement_data(self, measurements: List[Dict]) -> Tuple[List[str], List[str]]:
         x = []
         y = []
 
diff --git a/src/logic/tile/tiles/TestSensorLineChartTile.py b/src/logic/tile/tiles/TestSensorLineChartTile.py
index 58bafb0..41b40b3 100644
--- a/src/logic/tile/tiles/TestSensorLineChartTile.py
+++ b/src/logic/tile/tiles/TestSensorLineChartTile.py
@@ -1,6 +1,8 @@
 import datetime
 from unittest.mock import MagicMock
 
+import pytest
+
 from logic.tile.tiles.SensorLineChartTile import SensorLineChartTile, SensorType
 
 
@@ -112,3 +114,31 @@ class TestGetMinMax:
                                        storage_leaf_service_mock(None, None),
                                        [-6.0, 12])
         assert result == (-6 - SensorLineChartTile.MAX_Y_AXIS_SPACING, 12 + SensorLineChartTile.MAX_Y_AXIS_SPACING)
+
+
+class TestPrepareMeasurementData:
+    def test_no_measurements(self):
+        tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
+        measurements = []
+
+        assert tile._prepare_measurement_data(measurements) == ([], [])
+
+    def test_should_return_rounded_values(self):
+        tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
+        measurements = [
+            {'id': 409281, 'value': '-5.37', 'timestamp': '2021-02-09 17:47:55', 'sensor_id': 5}
+        ]
+
+        assert tile._prepare_measurement_data(measurements) == (['2021-02-09 17:47:55'], ['-5.4'])
+
+    def test_multiple_measurements_should_return_timestamps_from_latest_to_oldest(self):
+        tile = SensorLineChartTile('mySensorTile', example_settings(False), 10)
+
+        timestamp1 = '2021-02-09 17:47:55'
+        timestamp2 = '2021-02-09 17:48:55'
+        measurements = [
+            {'id': 409281, 'value': '-5.37', 'timestamp': timestamp1, 'sensor_id': 5},
+            {'id': 409282, 'value': '-6.2', 'timestamp': timestamp2, 'sensor_id': 5}
+        ]
+
+        assert tile._prepare_measurement_data(measurements) == ([timestamp2, timestamp1], ['-6.2', '-5.4'])
-- 
GitLab