diff --git a/src/logic/tile/tiles/SensorLineChartTile.py b/src/logic/tile/tiles/SensorLineChartTile.py index bc6c538bfcdde4674c3b99d0f22d81e1a08c8521..233f5bdcc09052f97d5ea636114017606addf652 100644 --- a/src/logic/tile/tiles/SensorLineChartTile.py +++ b/src/logic/tile/tiles/SensorLineChartTile.py @@ -183,7 +183,7 @@ class SensorLineChartTile(Tile): title = f'{title} - {days} days' warningSettings = self._settings['outdatedValueWarning'] - timeSinceLastValue = self.__get_time_since_last_value(warningSettings, data) + timeSinceLastValue = self._get_time_since_last_value(warningSettings, data) if warningSettings['enableNotificationViaPushbullet']: self.__send_notification(warningSettings, data['sensorInfo'], data['deviceInfo'], timeSinceLastValue) @@ -205,7 +205,7 @@ class SensorLineChartTile(Tile): showAxes=self._settings['showAxes'], timeSinceLastValue=timeSinceLastValue) - def __get_time_since_last_value(self, warningSettings: Dict, data): + def _get_time_since_last_value(self, warningSettings: Dict, data): timeAgo = '' if not warningSettings['enable']: diff --git a/test/logic/tile/tiles/TestSensorLineChartTile.py b/test/logic/tile/tiles/TestSensorLineChartTile.py index abe0cafb3b3553d20ce808628ed3500cd9956f56..9cf926989e52f105595534413b205bbd661f8dc9 100644 --- a/test/logic/tile/tiles/TestSensorLineChartTile.py +++ b/test/logic/tile/tiles/TestSensorLineChartTile.py @@ -1,8 +1,7 @@ import datetime +from unittest import mock from unittest.mock import MagicMock -import pytest - from logic.tile.tiles.SensorLineChartTile import SensorLineChartTile, SensorType @@ -168,3 +167,40 @@ class TestPrepareGhostTrace: x = [] y = [] assert tile._prepare_ghost_trace(-10, x, y) == ([], []) + + +class TestGetTimeSinceLastValue: + def __get_warning_settings(self, enable: bool): + return { + 'enable': enable, + 'limitInSeconds': 10, + 'enableNotificationViaPushbullet': False, + 'pushbulletToken': None + } + + def test_warnings_disabled_returns_empty_string(self): + tile = SensorLineChartTile('mySensorTile', example_settings(False), 10) + + warningSettings = self.__get_warning_settings(False) + data = {'latestTime': SensorLineChartTile.DATETIME_UNIX_TIMESTAMP_START} + + assert tile._get_time_since_last_value(warningSettings, data) == '' + + def test_warnings_enabled_no_outdated_value_returns_empty_string(self): + tile = SensorLineChartTile('mySensorTile', example_settings(False), 10) + + warningSettings = self.__get_warning_settings(True) + data = {'latestTime': datetime.datetime.now()} + + assert tile._get_time_since_last_value(warningSettings, data) == '' + + @mock.patch('logic.tile.tiles.SensorLineChartTile.datetime') + def test_warnings_enabled_outdated_value_returns_human_readable_string(self, datetimeMock): + tile = SensorLineChartTile('mySensorTile', example_settings(False), 10) + + datetimeMock.now.return_value = datetime.datetime(year=2021, month=1, day=1, hour=12, minute=00, second=00) + + warningSettings = self.__get_warning_settings(True) + data = {'latestTime': datetime.datetime(year=2021, month=1, day=1, hour=11, minute=00, second=00)} + + assert tile._get_time_since_last_value(warningSettings, data) == '1 hour ago'