ungana

Client application that creates customized .ics files for ticket booking and event reservations
Info | Log | Files | Refs | README

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()