Source code for devkit_ui.test_time_utils

import unittest
from datetime import UTC, datetime

from devkit_ui.time_utils import now_utc, now_utc_str, parse_ts


[docs] class TestTimeUtils(unittest.TestCase):
[docs] def test_now_utc_is_timezone_aware_utc(self) -> None: self.assertEqual(now_utc().tzinfo, UTC)
[docs] def test_now_utc_str_round_trips_through_parse_ts(self) -> None: parsed = parse_ts(now_utc_str()) self.assertIsNotNone(parsed) assert parsed is not None self.assertEqual(parsed.tzinfo, UTC)
[docs] def test_parse_ts_reads_iso_format(self) -> None: self.assertEqual(parse_ts('2025-04-01T09:30:00Z'), datetime(2025, 4, 1, 9, 30, 0, tzinfo=UTC))
[docs] def test_parse_ts_reads_legacy_format(self) -> None: self.assertEqual(parse_ts('01-04-2025_09-30-00'), datetime(2025, 4, 1, 9, 30, 0, tzinfo=UTC))
[docs] def test_parse_ts_returns_none_for_missing_input(self) -> None: self.assertIsNone(parse_ts(None)) self.assertIsNone(parse_ts(''))
[docs] def test_parse_ts_returns_none_for_malformed_input(self) -> None: self.assertIsNone(parse_ts('garbage')) self.assertIsNone(parse_ts('2025-13-45T99:99:99Z')) self.assertIsNone(parse_ts({'timestamp': '2025-04-01T09:30:00Z'})) # type: ignore[arg-type]
[docs] def test_parse_ts_rejects_near_miss_formats(self) -> None: malformed_timestamps = ( '2025-04-01T09:30:00', '2025-04-01T09:30:00+00:00', '01-04-2025_09-30-00Z', '2025-02-29T09:30:00Z', ) for timestamp in malformed_timestamps: with self.subTest(timestamp=timestamp): self.assertIsNone(parse_ts(timestamp))
if __name__ == '__main__': unittest.main()