You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
2.3 KiB

import unittest
from datetime import datetime, timedelta
from edmond.tests.test_plugin import get_plugin_patcher
from ..sleep import SleepPlugin
class TestSleepPlugin(unittest.TestCase):
def test_is_sleep_time(self):
with get_plugin_patcher(SleepPlugin):
plugin = SleepPlugin()
today = datetime.today()
tomorrow = datetime.today() + timedelta(days=1)
# Given sleep time from 23:00 to 7:00
plugin.config = {"sleep_time": 23, "wakeup_time": 7}
# You should sleep within the sleep range.
today_23_00 = today.replace(hour=23, minute=0, second=0)
self.assertTrue(plugin.is_sleep_time(today_23_00))
today_23_30 = today.replace(hour=23, minute=30, second=0)
self.assertTrue(plugin.is_sleep_time(today_23_30))
tomorrow_00_00 = tomorrow.replace(hour=0, minute=0, second=0)
self.assertTrue(plugin.is_sleep_time(tomorrow_00_00))
tomorrow_06_59 = tomorrow.replace(hour=6, minute=59, second=0)
self.assertTrue(plugin.is_sleep_time(tomorrow_06_59))
# But not outside the range.
today_12_00 = today.replace(hour=12, minute=0, second=0)
self.assertFalse(plugin.is_sleep_time(today_12_00))
today_22_59 = today.replace(hour=22, minute=59, second=0)
self.assertFalse(plugin.is_sleep_time(today_22_59))
# Given sleep time from 00:00 to 7:00
plugin.config = {"sleep_time": 0, "wakeup_time": 7}
# You should sleep within the sleep range.
today_00_00 = today.replace(hour=0, minute=0, second=0)
self.assertTrue(plugin.is_sleep_time(today_00_00))
today_06_59 = today.replace(hour=6, minute=59, second=0)
self.assertTrue(plugin.is_sleep_time(today_06_59))
tomorrow_06_59 = tomorrow.replace(hour=6, minute=59, second=0)
self.assertTrue(plugin.is_sleep_time(tomorrow_06_59))
# But not outside the range.
today_12_00 = today.replace(hour=12, minute=0, second=0)
self.assertFalse(plugin.is_sleep_time(today_12_00))
today_22_59 = today.replace(hour=22, minute=59, second=0)
self.assertFalse(plugin.is_sleep_time(today_22_59))