Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_create_schedule_or_filters():
dt = pendulum.datetime(2019, 1, 1)
s = schedules.Schedule(
clocks=[clocks.IntervalClock(timedelta(hours=1))],
or_filters=[
filters.between_times(pendulum.time(9), pendulum.time(9)),
filters.between_times(pendulum.time(15), pendulum.time(15)),
],
)
assert s.next(6, after=dt) == [
dt.add(days=0).replace(hour=9),
dt.add(days=0).replace(hour=15),
dt.add(days=1).replace(hour=9),
dt.add(days=1).replace(hour=15),
dt.add(days=2).replace(hour=9),
dt.add(days=2).replace(hour=15),
]
def test_create_schedule_multiple_filters():
# jan 3 was a thursday
dt = pendulum.datetime(2019, 1, 3)
s = schedules.Schedule(
# fire every hour
clocks=[clocks.IntervalClock(timedelta(hours=1))],
# only on weekdays
filters=[filters.is_weekday],
# only at 9am or 3pm
or_filters=[
filters.between_times(pendulum.time(9), pendulum.time(9)),
filters.between_times(pendulum.time(15), pendulum.time(15)),
],
# not on january 8
not_filters=[filters.between_dates(1, 8, 1, 8)],
)
assert s.next(8, after=dt) == [
dt.replace(hour=9),
dt.replace(hour=15),
dt.add(days=1).replace(hour=9),
dt.add(days=1).replace(hour=15),
# skip weekend
dt.add(days=4).replace(hour=9),
dt.add(days=4).replace(hour=15),
# skip jan 8!
dt.add(days=6).replace(hour=9),
dt.add(days=6).replace(hour=15),
def test_closest():
instance = pendulum.time(12, 34, 56)
t1 = pendulum.time(12, 34, 54)
t2 = pendulum.time(12, 34, 59)
closest = instance.closest(t1, t2)
assert t1 == closest
closest = instance.closest(t2, t1)
assert t1 == closest
def test_farthest():
instance = pendulum.time(12, 34, 56)
t1 = pendulum.time(12, 34, 54)
t2 = pendulum.time(12, 34, 59)
farthest = instance.farthest(t1, t2)
assert t2 == farthest
farthest = instance.farthest(t2, t1)
assert t2 == farthest
def test_closest_with_time():
instance = pendulum.time(12, 34, 56)
t1 = pendulum.time(12, 34, 54)
t2 = pendulum.time(12, 34, 59)
closest = instance.closest(t1, t2)
assert_time(closest, 12, 34, 54)
def test_add_seconds_negative():
assert pendulum.time(12, 34, 56).add(seconds=-1).second == 55
def test_at_time(test_times):
test_dt, result = test_times
filter_fn = filters.at_time(pendulum.time(3, 30))
assert filter_fn(test_dt) is result
def test_create_schedule_or_filters():
dt = pendulum.datetime(2019, 1, 1)
s = schedules.Schedule(
clocks=[clocks.IntervalClock(timedelta(hours=1))],
or_filters=[
filters.between_times(pendulum.time(9), pendulum.time(9)),
filters.between_times(pendulum.time(15), pendulum.time(15)),
],
)
assert s.next(6, after=dt) == [
dt.add(days=0).replace(hour=9),
dt.add(days=0).replace(hour=15),
dt.add(days=1).replace(hour=9),
dt.add(days=1).replace(hour=15),
dt.add(days=2).replace(hour=9),
dt.add(days=2).replace(hour=15),
]
def test_serialize_complex_schedule():
dt = pendulum.datetime(2019, 1, 3)
s = schedules.Schedule(
# fire every hour
clocks=[clocks.IntervalClock(timedelta(hours=1))],
# only on weekdays
filters=[filters.is_weekday],
# only at 9am or 3pm
or_filters=[
filters.at_time(pendulum.time(9)),
filters.between_times(pendulum.time(15), pendulum.time(15)),
],
# not on january 8
not_filters=[filters.between_dates(1, 8, 1, 8)],
# add three hours
adjustments=[adjustments.add(timedelta(hours=3))],
)
s2 = serialize_and_deserialize(s)
assert s2.next(8, after=dt) == [
dt.replace(hour=12),
dt.replace(hour=18),
dt.add(days=1).replace(hour=12),
dt.add(days=1).replace(hour=18),
# skip weekend
dt.add(days=4).replace(hour=12),