def test_next_n(self): start_date = pendulum.datetime(2018, 1, 1) now = pendulum.now("UTC") s = schedules.IntervalSchedule(start_date, timedelta(days=1)) t = schedules.OneTimeSchedule(start_date=s.next(1)[0].add(minutes=-1)) main = schedules.UnionSchedule([s, t]) assert main.next(2) == [t.next(1)[0], s.next(1)[0]]
def test_next_n_with_no_next(self): start_date = pendulum.datetime(2018, 1, 1) now = pendulum.now("UTC") s = schedules.IntervalSchedule(start_date, timedelta(days=1)) t = schedules.OneTimeSchedule(start_date=now.add(hours=-1)) main = schedules.UnionSchedule([s, t]) assert main.next(2) == s.next(2)
def test_serialize_onetime_schedule(): schema = schemas.OneTimeScheduleSchema() schedule = schedules.OneTimeSchedule(start_date=pendulum.today("utc")) assert schema.dump(schedule) == { "__version__": __version__, "start_date": serialize_fmt(schedule.start_date), }
def test_onetime_schedule_next_n_with_after_argument(self): start_date = pendulum.today("UTC").add(days=1) s = schedules.OneTimeSchedule(start_date) assert s.next(1, after=start_date - timedelta(seconds=1)) == [start_date] assert s.next(1, after=start_date.add(days=-1)) == [start_date] assert s.next(1, after=start_date.add(days=1)) == []
def test_roundtrip_onetime_schedule(): schema = schemas.OneTimeScheduleSchema() schedule = schedules.OneTimeSchedule(start_date=pendulum.today("utc")) new = schema.load(schema.dump(schedule)) assert isinstance(new, schedules.OneTimeSchedule) assert new.start_date == schedule.start_date assert new.end_date == schedule.start_date
def test_serialize_onetime_schedule(self): start_date = pendulum.datetime(1986, 9, 20) schedule = schedules.OneTimeSchedule(start_date=start_date) assert schedule.serialize() == { "start_date": serialize_fmt(start_date), "type": "OneTimeSchedule", "__version__": __version__, }
def test_onetime_schedule_n_negative(self): start_date = pendulum.today("UTC").add(days=1) s = schedules.OneTimeSchedule(start_date=start_date) assert s.next(-3) == []
def test_onetime_schedule_next_n(self): """Test that default after is *now*""" start_date = pendulum.today("UTC").add(days=1) s = schedules.OneTimeSchedule(start_date) assert s.next(3) == [start_date] assert s.next(1) == [start_date]
def test_start_date_must_be_datetime(self): with pytest.raises(TypeError): schedules.OneTimeSchedule(start_date=None)
def test_start_date_must_be_provided(self): with pytest.raises(TypeError): schedules.OneTimeSchedule()
def test_create_onetime_schedule(self): schedule = schedules.OneTimeSchedule(start_date=pendulum.now("UTC")) assert schedule.start_date == schedule.end_date