From a31100d283c13653cc4a130a95642db1c27bd80a Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Fri, 12 Feb 2021 17:50:25 +0100 Subject: [PATCH] #45 - added unittests for _send_notification() --- src/logic/tile/tiles/SensorLineChartTile.py | 8 ++-- .../tile/tiles/TestSensorLineChartTile.py | 40 +++++++++++++++++++ 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/logic/tile/tiles/SensorLineChartTile.py b/src/logic/tile/tiles/SensorLineChartTile.py index 233f5bd..ab32abf 100644 --- a/src/logic/tile/tiles/SensorLineChartTile.py +++ b/src/logic/tile/tiles/SensorLineChartTile.py @@ -184,8 +184,7 @@ class SensorLineChartTile(Tile): warningSettings = self._settings['outdatedValueWarning'] timeSinceLastValue = self._get_time_since_last_value(warningSettings, data) - if warningSettings['enableNotificationViaPushbullet']: - self.__send_notification(warningSettings, data['sensorInfo'], data['deviceInfo'], timeSinceLastValue) + self._send_notification(warningSettings, data['sensorInfo'], data['deviceInfo'], timeSinceLastValue) return Tile.render_template(os.path.dirname(__file__), __class__.__name__, x=data['x'], @@ -222,7 +221,10 @@ class SensorLineChartTile(Tile): return timeAgo - def __send_notification(self, warningSettings: Dict, sensorInfo: Dict, deviceInfo: Dict, timeSinceLastValue: str): + def _send_notification(self, warningSettings: Dict, sensorInfo: Dict, deviceInfo: Dict, timeSinceLastValue: str): + if not warningSettings['enableNotificationViaPushbullet']: + return + token = warningSettings['pushbulletToken'] sensorName = sensorInfo['name'] diff --git a/test/logic/tile/tiles/TestSensorLineChartTile.py b/test/logic/tile/tiles/TestSensorLineChartTile.py index 9cf9269..fef9967 100644 --- a/test/logic/tile/tiles/TestSensorLineChartTile.py +++ b/test/logic/tile/tiles/TestSensorLineChartTile.py @@ -2,6 +2,7 @@ import datetime from unittest import mock from unittest.mock import MagicMock +from logic import Helpers from logic.tile.tiles.SensorLineChartTile import SensorLineChartTile, SensorType @@ -204,3 +205,42 @@ class TestGetTimeSinceLastValue: 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' + + +class TestSendNotification: + def __get_warning_settings(self, enable: bool, enableNotification: bool): + return { + 'enable': enable, + 'limitInSeconds': 10, + 'enableNotificationViaPushbullet': enableNotification, + 'pushbulletToken': 'myToken' + } + + @mock.patch('logic.tile.tiles.SensorLineChartTile.Helpers') + def test_notification_disabled_should_do_nothing(self, helpersMock): + tile = SensorLineChartTile('mySensorTile', example_settings(False), 10) + + warningSettings = self.__get_warning_settings(True, False) + + tile._send_notification(warningSettings, {}, {}, '1 hour ago') + helpersMock.send_notification_via_pushbullet.assert_not_called() + + @mock.patch('logic.Helpers.requests') + def test_send_notification_should_call_pushbullet_api(self, requestsMock): + tile = SensorLineChartTile('mySensorTile', example_settings(False), 10) + + warningSettings = self.__get_warning_settings(True, True) + + sensorInfo = { + 'name': 'mySensor', + 'type': 'temperature' + } + + deviceInfo = { + 'name': 'myDevice' + } + + requestsMock.post.return_value.status_code = 200 + + tile._send_notification(warningSettings, sensorInfo, deviceInfo, '1 hour ago') + requestsMock.post.assert_called_once_with(Helpers.PUSHBULLET_PUSH_URL, data=mock.ANY, headers=mock.ANY) -- GitLab