commit 65417219f11a2f805dd64eeb6367e6e21ddfc79d
parent a17c24b7a7c12d97d671d2e08c8ad883412a3d7d
Author: Carlosokumu <carlosokumu254@gmail.com>
Date: Mon, 8 Sep 2025 09:05:49 +0300
add utils tests
Diffstat:
1 file changed, 54 insertions(+), 0 deletions(-)
diff --git a/tests/test_utils.py b/tests/test_utils.py
@@ -0,0 +1,54 @@
+import unittest
+from datetime import timedelta, datetime
+from ungana.utils import (parse_duration,parse_datetime,generate_uid,validate_datetime,validate_duration)
+
+
+class TestUtils(unittest.TestCase):
+
+ def test_parse_duration_hours_minutes(self):
+ self.assertEqual(parse_duration("2h 30m"), timedelta(hours=2, minutes=30))
+ self.assertEqual(parse_duration("1h"), timedelta(hours=1))
+ self.assertEqual(parse_duration("45m"), timedelta(minutes=45))
+ self.assertEqual(parse_duration(" 2h,15m "), timedelta(hours=2, minutes=15))
+
+ def test_parse_datetime_valid_formats(self):
+ dt1 = parse_datetime("2025-09-08 14:30")
+ dt2 = parse_datetime("08-09-2025 14:30")
+ self.assertEqual(dt1, datetime(2025, 9, 8, 14, 30))
+ self.assertEqual(dt2, datetime(2025, 9, 8, 14, 30))
+
+ def test_parse_datetime_invalid(self):
+ with self.assertRaises(ValueError):
+ parse_datetime("2025/09/08 14:30")
+
+ def test_generate_uid(self):
+ uid = generate_uid("gophers.org")
+ self.assertTrue(uid.endswith("@gophers.org"))
+
+ def test_validate_datetime_iso(self):
+ iso = "2025-09-08T14:30:00"
+ self.assertEqual(validate_datetime(iso), iso)
+
+ def test_validate_datetime_dmy_format(self):
+ dt_str = "08-09-2025 14:30"
+ result = validate_datetime(dt_str)
+ self.assertEqual(result, datetime(2025, 9, 8, 14, 30).isoformat())
+
+ def test_validate_datetime_invalid(self):
+ with self.assertRaises(Exception):
+ validate_datetime("2025/09/08")
+
+ def test_validate_duration_valid(self):
+ self.assertEqual(validate_duration("2h"), "2h")
+ self.assertEqual(validate_duration("30m"), "30m")
+ self.assertEqual(validate_duration("1h30m"), "1h30m")
+
+ def test_validate_duration_invalid(self):
+ with self.assertRaises(Exception):
+ validate_duration("2hours")
+ with self.assertRaises(Exception):
+ validate_duration("foobar")
+
+
+if __name__ == "__main__":
+ unittest.main()