Add option to rule to move date of occurence to working day

This commit is contained in:
Frederik Jaeckel 2024-06-03 23:37:26 +02:00
parent e4963beee9
commit 9685670672
2 changed files with 93 additions and 4 deletions

View file

@ -170,7 +170,9 @@ class PlannerTestCase(object):
def test_planner_create_job(self):
""" create job, check rule + constraints
"""
Planner = Pool().get('cashbook.planner')
pool = Pool()
Planner = pool.get('cashbook.planner')
Config = pool.get('cashbook.configuration')
job = self.prep_create_job()
self.assertEqual(
@ -243,6 +245,53 @@ class PlannerTestCase(object):
[date(2022, 5, 11), date(2022, 6, 8), date(2022, 7, 13),
date(2022, 8, 10), date(2022, 9, 14), date(2022, 10, 12)])
# set up holidays
cfg1 = Config(
holidays='01-01;05-01;easter:+1;easter:-2;ascension;whitsun:+1')
cfg1.save()
# 1st of may, should be moved to 2nd of may
self.assertEqual(
job._compute_dates_by_rrule(
query_date=date(2022, 4, 25), count=3,
params={
'end_date': None, 'start_date': date(2022, 5, 1),
'move_event': 'after', 'weekday': None,
'setpos': None, 'interval': 1, 'frequ': 'year',
'monthday': None}),
[date(2022, 5, 2), date(2023, 5, 2), date(2024, 5, 2)])
# easter of 2022, occurence-date moved to tuesday after easter'22
self.assertEqual(
job._compute_dates_by_rrule(
query_date=date(2022, 4, 10), count=3,
params={
'end_date': None, 'start_date': date(2022, 4, 17),
'move_event': 'after', 'weekday': None,
'setpos': None,
'interval': 1, 'frequ': 'month', 'monthday': None}),
[date(2022, 4, 19), date(2022, 5, 17), date(2022, 6, 17)])
# easter of 2022, monthly, occurence-date moved to
# thursday before easter'22
self.assertEqual(
job._compute_dates_by_rrule(
query_date=date(2022, 4, 10), count=3,
params={
'end_date': None, 'start_date': date(2022, 4, 17),
'move_event': 'before', 'weekday': None,
'setpos': None,
'interval': 1, 'frequ': 'month', 'monthday': None}),
[date(2022, 4, 14), date(2022, 5, 17), date(2022, 6, 17)])
# easter of 2022, monthly, check next occurence after easter
# recompute date at moved occurence-date+1
self.assertEqual(
job._compute_dates_by_rrule(
query_date=date(2022, 4, 15), count=3,
params={
'end_date': None, 'start_date': date(2022, 4, 17),
'move_event': 'before', 'weekday': None,
'setpos': None,
'interval': 1, 'frequ': 'month', 'monthday': None}),
[date(2022, 5, 17), date(2022, 6, 17), date(2022, 7, 15)])
Planner.write(*[[job], {
'frequ': 'year', 'start_date': date(2022, 5, 1),
'setpos': None, 'monthday': None, 'interval': 1,