diff --git a/src/logic/tile/tiles/SensorLineChartTile.py b/src/logic/tile/tiles/SensorLineChartTile.py index dbfe0f171b7200bea0299711eebe7e92c8529728..dbd5c72a79ba157864a769b3dace55536709fc78 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 58bafb09632451f4a68851e468683af254c99716..41b40b34fc23ee1c0d9223c48af5868cd282bae7 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'])