test_utils.py (2045B)
1 import unittest 2 from datetime import timedelta, datetime 3 from ungana.utils import (parse_duration,parse_datetime,generate_uid,validate_datetime,validate_duration) 4 5 6 class TestUtils(unittest.TestCase): 7 8 def test_parse_duration_hours_minutes(self): 9 self.assertEqual(parse_duration("2h 30m"), timedelta(hours=2, minutes=30)) 10 self.assertEqual(parse_duration("1h"), timedelta(hours=1)) 11 self.assertEqual(parse_duration("45m"), timedelta(minutes=45)) 12 self.assertEqual(parse_duration(" 2h,15m "), timedelta(hours=2, minutes=15)) 13 14 def test_parse_datetime_valid_formats(self): 15 dt1 = parse_datetime("2025-09-08 14:30") 16 dt2 = parse_datetime("08-09-2025 14:30") 17 self.assertEqual(dt1, datetime(2025, 9, 8, 14, 30)) 18 self.assertEqual(dt2, datetime(2025, 9, 8, 14, 30)) 19 20 def test_parse_datetime_invalid(self): 21 with self.assertRaises(ValueError): 22 parse_datetime("2025/09/08 14:30") 23 24 def test_generate_uid(self): 25 uid = generate_uid("gophers.org") 26 self.assertTrue(uid.endswith("@gophers.org")) 27 28 def test_validate_datetime_iso(self): 29 iso = "2025-09-08T14:30:00" 30 self.assertEqual(validate_datetime(iso), iso) 31 32 def test_validate_datetime_dmy_format(self): 33 dt_str = "08-09-2025 14:30" 34 result = validate_datetime(dt_str) 35 self.assertEqual(result, datetime(2025, 9, 8, 14, 30).isoformat()) 36 37 def test_validate_datetime_invalid(self): 38 with self.assertRaises(Exception): 39 validate_datetime("2025/09/08") 40 41 def test_validate_duration_valid(self): 42 self.assertEqual(validate_duration("2h"), "2h") 43 self.assertEqual(validate_duration("30m"), "30m") 44 self.assertEqual(validate_duration("1h30m"), "1h30m") 45 46 def test_validate_duration_invalid(self): 47 with self.assertRaises(Exception): 48 validate_duration("2hours") 49 with self.assertRaises(Exception): 50 validate_duration("foobar") 51 52 53 if __name__ == "__main__": 54 unittest.main()