diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/bot/test_converters.py | 60 |
1 files changed, 59 insertions, 1 deletions
diff --git a/tests/bot/test_converters.py b/tests/bot/test_converters.py index 1bb678db2..880f86e28 100644 --- a/tests/bot/test_converters.py +++ b/tests/bot/test_converters.py @@ -6,7 +6,7 @@ from unittest.mock import MagicMock, patch from dateutil.relativedelta import relativedelta from discord.ext.commands import BadArgument -from bot.converters import Duration, HushDurationConverter, ISODateTime, PackageName +from bot.converters import DayDuration, Duration, HushDurationConverter, ISODateTime, PackageName class ConverterTests(unittest.IsolatedAsyncioTestCase): @@ -252,3 +252,61 @@ class ConverterTests(unittest.IsolatedAsyncioTestCase): with self.subTest(invalid_minutes_string=invalid_minutes_string, exception_message=exception_message): with self.assertRaisesRegex(BadArgument, re.escape(exception_message)): await converter.convert(self.context, invalid_minutes_string) + + async def test_day_duration_convertor_for_valid(self): + """DayDuration converter returns correct datetime for valid datetime string.""" + test_values = ( + # H:M am/pm + ("2:14 pm", 51240), + ("2:14 am", 8040), + ("2:14Pm", 51240), + ("2:14AM", 8040), + + # HM am/pm + ("942pm", 78120), + ("854 am", 32040), + + # H am/pm + ("11pm", 82800), + ("2 am", 7200), + + # H:M + ("2:14", 8040), + ("23:05", 83100), + ("2305", 83100), + + # H + ("5", 18000), + ("18", 64800), + ) + converter = DayDuration() + for day_duration_string, expected_1970 in test_values: + with self.subTest(day_duration_string=day_duration_string, expected_1970_dt=expected_1970): + converted = await converter.convert(self.context, day_duration_string) + + expected_1970_dt = datetime.utcfromtimestamp(expected_1970) + today = datetime.utcnow().date() + expected_now = expected_1970_dt.replace( + year=today.year, + month=today.month, + day=today.day + ) + + self.assertEqual(expected_now, converted) + + async def test_day_duration_convertor_for_invalid(self): + """DayDuration converter raises the correct exception for invalid datetime strings.""" + test_values = ( + # Check if it fails when providing the date part + '2019-11-12 09:15', + + # Other non-valid strings + 'fisk the tag master', + ) + + converter = DayDuration() + for datetime_string in test_values: + with self.subTest(datetime_string=datetime_string): + exception_message = f"`{datetime_string}` is not a valid time duration string." + with self.assertRaisesRegex(BadArgument, re.escape(exception_message)): + await converter.convert(self.context, datetime_string) |