ungana

Unnamed repository; edit this file 'description' to name the repository.
Info | Log | Files | Refs | README

commit 65417219f11a2f805dd64eeb6367e6e21ddfc79d
parent a17c24b7a7c12d97d671d2e08c8ad883412a3d7d
Author: Carlosokumu <carlosokumu254@gmail.com>
Date:   Mon,  8 Sep 2025 09:05:49 +0300

add utils tests

Diffstat:
Atests/test_utils.py | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
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()