Files
troupe-standup/wizard-work/beam/test_cron_next.py
T

50 lines
1.4 KiB
Python

import datetime as dt
from cron_next import parse
def test_every_minute():
c = parse("* * * * *")
t = dt.datetime(2026,1,1,0,0)
assert c.next(t) == dt.datetime(2026,1,1,0,1)
def test_specific():
c = parse("30 14 * * *")
t = dt.datetime(2026,1,1,10,0)
assert c.next(t) == dt.datetime(2026,1,1,14,30)
def test_dow_restricted():
# Mondays at 09:00
c = parse("0 9 * * 1")
# 2026-01-05 is Monday
t = dt.datetime(2026,1,4,10,0)
assert c.next(t) == dt.datetime(2026,1,5,9,0)
def test_dom_and_dow_or():
# dom=1 OR dow=monday
c = parse("0 0 1 * 1")
# 2026-02-01 is Sunday; next monday is Feb 2; but dom=1 matches Feb1 midnight already? after Jan 2 00:00
t = dt.datetime(2026,1,2,0,1)
# next match: Feb1 00:00 (dom) since before Monday Feb2
assert c.next(t) == dt.datetime(2026,1,5,0,0)
def test_step_and_range():
c = parse("*/15 9-17 * * *")
t = dt.datetime(2026,1,1,8,50)
assert c.next(t) == dt.datetime(2026,1,1,9,0)
def test_names():
c = parse("0 0 1 jan *")
t = dt.datetime(2025,6,1,0,0)
assert c.next(t) == dt.datetime(2026,1,1,0,0)
def test_invalid_fields():
try:
parse("* * * *")
assert False
except ValueError:
pass
def test_dow_sunday_7():
c = parse("0 0 * * 7")
# sunday
t = dt.datetime(2026,1,3,0,1) # sat
assert c.next(t) == dt.datetime(2026,1,4,0,0)