Skip to content

Commit

Permalink
Issue-19-validate_date_invalid_weekday
Browse files Browse the repository at this point in the history
  • Loading branch information
Sonic0 committed May 24, 2024
1 parent 600d5e6 commit ade3e87
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 8 deletions.
2 changes: 1 addition & 1 deletion cron_converter/sub_modules/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def to_parts(d: Union[datetime.datetime, datetime.date]) -> List[Union[int, None
hour = None
day = d.day
month = d.month
dayofweek = d.weekday()
dayofweek = iso_to_cron_weekday(d.isoweekday())

if isinstance(d, datetime.datetime):
minute = d.minute
Expand Down
16 changes: 9 additions & 7 deletions tests/unit/tests_cron.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,20 +71,22 @@ def test_datetime_is_valid_cron(self):
self.assertTrue(Cron('* * 10 * *').validate(datetime(2022, 1, 10, 1, 9)))
self.assertTrue(Cron('* * * 10 *').validate(datetime(2022, 10, 1, 1, 9)))
# 2024-03-19 is a Tuesday
self.assertTrue(Cron('* * * * 1').validate(datetime(2024, 3, 19, 1, 9)))
self.assertTrue(Cron('9 1 19 3 1').validate(datetime(2024, 3, 19, 1, 9)))
self.assertTrue(Cron('* 1 19 3 1').validate(datetime(2024, 3, 19, 1, 55)))
self.assertTrue(Cron('* * * * 2').validate(datetime(2024, 3, 19, 1, 9)))
self.assertTrue(Cron('9 1 19 3 2').validate(datetime(2024, 3, 19, 1, 9)))
self.assertTrue(Cron('* 1 19 3 2').validate(datetime(2024, 3, 19, 1, 55)))
self.assertTrue(
Cron('*/5 9-17/2 * 1-3 1-5').validate(datetime(2024, 3, 19, 15, 55)))
# 2024-03-24 is a Sunday
self.assertTrue(Cron('* * * * 0').validate(datetime(2024, 3, 24, 1, 9)))

def test_date_object_in_cron(self):
self.assertTrue((date.today()) in Cron('* * * * *'))
self.assertTrue((datetime(2022, 1, 1, 1, 10)) in Cron('10 * * * *'))
self.assertFalse((datetime(2022, 1, 1)) in Cron('10 * * * *'))
self.assertTrue(date(2022, 1, 1) in (Cron('* 10 * * *')))
# 2024-03-19 is a Tuesday
self.assertTrue((date(2024, 3, 19)) in Cron('* * * * 1'))
self.assertTrue((date(2024, 3, 19)) in Cron('9 1 19 3 1'))
self.assertTrue((datetime(2024, 3, 19, 1, 55)) in Cron('* 1 19 3 1'))
self.assertFalse((datetime(2024, 4, 19, 1, 55)) in Cron('* 1 19 3 1'))
self.assertTrue((date(2024, 3, 19)) in Cron('* * * * 2'))
self.assertTrue((date(2024, 3, 19)) in Cron('9 1 19 3 2'))
self.assertTrue((datetime(2024, 3, 19, 1, 55)) in Cron('* 1 19 3 2'))
self.assertFalse((datetime(2024, 4, 19, 1, 55)) in Cron('* 1 19 3 2'))
self.assertTrue((datetime(2024, 3, 19, 15, 55) in Cron('*/5 9-17/2 * 1-3 1-5')))
20 changes: 20 additions & 0 deletions tests/unit/tests_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import unittest
from datetime import date, datetime

import cron_converter.sub_modules.utils as utils


class UtilsTest(unittest.TestCase):

def test_to_parts(self):
today_d = date(day=20, month=5, year=2024)
self.assertEqual(utils.to_parts(today_d), [None, None, 20, 5, 1], "The result has to be True")
today_dt = datetime(minute=20, hour=23, day=20, month=5, year=2024)
self.assertEqual(utils.to_parts(today_dt), [20, 23, 20, 5, 1], "The result has to be True")

def test_iso_to_cron_weekday(self):
iso_weekdays = range(1, 7+1, 1)
cron_weekdays = []
for iso_weekday in iso_weekdays:
cron_weekdays.append(utils.iso_to_cron_weekday(iso_weekday))
self.assertListEqual(cron_weekdays, [1, 2, 3, 4, 5, 6, 0], "The result has to be a range from 0 to 6")

0 comments on commit ade3e87

Please sign in to comment.