from datetime import datetime import tzlocal from discord_reminder_bot.parse import ParsedTime, parse_time def test_parse_time() -> None: """Test the parse_time function.""" parsed_time: ParsedTime = parse_time("18 January 2040") assert parsed_time.err is False assert not parsed_time.err_msg assert parsed_time.date_to_parse == "18 January 2040" assert parsed_time.parsed_time assert parsed_time.parsed_time.strftime("%Y-%m-%d %H:%M:%S") == "2040-01-18 00:00:00" parsed_time: ParsedTime = parse_time("18 January 2040 12:00") assert parsed_time.err is False assert not parsed_time.err_msg assert parsed_time.date_to_parse == "18 January 2040 12:00" assert parsed_time.parsed_time assert parsed_time.parsed_time.strftime("%Y-%m-%d %H:%M:%S") == "2040-01-18 12:00:00" parsed_time: ParsedTime = parse_time("18 January 2040 12:00:00") assert parsed_time.err is False assert not parsed_time.err_msg assert parsed_time.date_to_parse == "18 January 2040 12:00:00" assert parsed_time.parsed_time assert parsed_time.parsed_time.strftime("%Y-%m-%d %H:%M:%S") == "2040-01-18 12:00:00" parsed_time: ParsedTime = parse_time("18 January 2040 12:00:00 UTC") assert parsed_time.err is False assert not parsed_time.err_msg assert parsed_time.date_to_parse == "18 January 2040 12:00:00 UTC" assert parsed_time.parsed_time assert parsed_time.parsed_time.strftime("%Y-%m-%d %H:%M:%S") == "2040-01-18 13:00:00" parsed_time: ParsedTime = parse_time("18 January 2040 12:00:00 Europe/Stockholm") assert parsed_time.err is True assert parsed_time.err_msg == "Could not parse the date." assert parsed_time.date_to_parse == "18 January 2040 12:00:00 Europe/Stockholm" assert parsed_time.parsed_time is None def test_ParsedTime() -> None: # noqa: N802 """Test the ParsedTime class.""" parsed_time: ParsedTime = ParsedTime( err=False, err_msg="", date_to_parse="18 January 2040", parsed_time=datetime(2040, 1, 18, 0, 0, 0, tzinfo=tzlocal.get_localzone()), ) assert parsed_time.err is False assert not parsed_time.err_msg assert parsed_time.date_to_parse == "18 January 2040" assert parsed_time.parsed_time assert parsed_time.parsed_time.strftime("%Y-%m-%d %H:%M:%S") == "2040-01-18 00:00:00" parsed_time: ParsedTime = ParsedTime( err=True, err_msg="Could not parse the date.", date_to_parse="18 January 2040 12:00:00 Europe/Stockholm", parsed_time=None, ) assert parsed_time.err is True assert parsed_time.err_msg == "Could not parse the date." assert parsed_time.date_to_parse == "18 January 2040 12:00:00 Europe/Stockholm" assert parsed_time.parsed_time is None