diff options
| author | 2019-10-04 22:20:53 -0600 | |
|---|---|---|
| committer | 2019-10-04 22:20:53 -0600 | |
| commit | 7a5cec5c9c2b73448c7a09b0f390690dded0c0a9 (patch) | |
| tree | 7faf72b382111ecb579ef6d95911c6c0c294c3d1 /tests/test_converters.py | |
| parent | Merge branch 'add-role-info-command' of github.com:python-discord/bot into ad... (diff) | |
| parent | Merge pull request #490 from python-discord/bb-previous-reason (diff) | |
Merge branch 'master' into add-role-info-command
Diffstat (limited to 'tests/test_converters.py')
| -rw-r--r-- | tests/test_converters.py | 78 | 
1 files changed, 78 insertions, 0 deletions
| diff --git a/tests/test_converters.py b/tests/test_converters.py index 35fc5d88e..f69995ec6 100644 --- a/tests/test_converters.py +++ b/tests/test_converters.py @@ -8,6 +8,7 @@ from discord.ext.commands import BadArgument  from bot.converters import (      Duration, +    ISODateTime,      TagContentConverter,      TagNameConverter,      ValidPythonIdentifier, @@ -184,3 +185,80 @@ def test_duration_converter_for_invalid(duration: str):      converter = Duration()      with pytest.raises(BadArgument, match=f'`{duration}` is not a valid duration string.'):          asyncio.run(converter.convert(None, duration)) + + +    ("datetime_string", "expected_dt"), +    ( + +        # `YYYY-mm-ddTHH:MM:SSZ` | `YYYY-mm-dd HH:MM:SSZ` +        ('2019-09-02T02:03:05Z', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02 02:03:05Z', datetime.datetime(2019, 9, 2, 2, 3, 5)), + +        # `YYYY-mm-ddTHH:MM:SS±HH:MM` | `YYYY-mm-dd HH:MM:SS±HH:MM` +        ('2019-09-02T03:18:05+01:15', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02 03:18:05+01:15', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02T00:48:05-01:15', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02 00:48:05-01:15', datetime.datetime(2019, 9, 2, 2, 3, 5)), + +        # `YYYY-mm-ddTHH:MM:SS±HHMM` | `YYYY-mm-dd HH:MM:SS±HHMM` +        ('2019-09-02T03:18:05+0115', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02 03:18:05+0115', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02T00:48:05-0115', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02 00:48:05-0115', datetime.datetime(2019, 9, 2, 2, 3, 5)), + +        # `YYYY-mm-ddTHH:MM:SS±HH` | `YYYY-mm-dd HH:MM:SS±HH` +        ('2019-09-02 03:03:05+01', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02T01:03:05-01', datetime.datetime(2019, 9, 2, 2, 3, 5)), + +        # `YYYY-mm-ddTHH:MM:SS` | `YYYY-mm-dd HH:MM:SS` +        ('2019-09-02T02:03:05', datetime.datetime(2019, 9, 2, 2, 3, 5)), +        ('2019-09-02 02:03:05', datetime.datetime(2019, 9, 2, 2, 3, 5)), + +        # `YYYY-mm-ddTHH:MM` | `YYYY-mm-dd HH:MM` +        ('2019-11-12T09:15', datetime.datetime(2019, 11, 12, 9, 15)), +        ('2019-11-12 09:15', datetime.datetime(2019, 11, 12, 9, 15)), + +        # `YYYY-mm-dd` +        ('2019-04-01', datetime.datetime(2019, 4, 1)), + +        # `YYYY-mm` +        ('2019-02-01', datetime.datetime(2019, 2, 1)), + +        # `YYYY` +        ('2025', datetime.datetime(2025, 1, 1)), +    ), +) +def test_isodatetime_converter_for_valid(datetime_string: str, expected_dt: datetime.datetime): +    converter = ISODateTime() +    converted_dt = asyncio.run(converter.convert(None, datetime_string)) +    assert converted_dt.tzinfo is None +    assert converted_dt == expected_dt + + +    ("datetime_string"), +    ( +        # Make sure it doesn't interfere with the Duration converter +        ('1Y'), +        ('1d'), +        ('1H'), + +        # Check if it fails when only providing the optional time part +        ('10:10:10'), +        ('10:00'), + +        # Invalid date format +        ('19-01-01'), + +        # Other non-valid strings +        ('fisk the tag master'), +    ), +) +def test_isodatetime_converter_for_invalid(datetime_string: str): +    converter = ISODateTime() +    with pytest.raises( +        BadArgument, +        match=f"`{datetime_string}` is not a valid ISO-8601 datetime string", +    ): +        asyncio.run(converter.convert(None, datetime_string)) | 
