add cronjob + test

This commit is contained in:
Frederik Jaeckel 2024-03-01 07:52:09 +01:00
parent 0fc0c4c8b9
commit 95f06e8e26
2 changed files with 72 additions and 28 deletions

View file

@ -219,35 +219,54 @@ class PlannerTestCase(object):
count=1, query_date=date(2022, 5, 1)), [
date(2022, 5, 1)])
with Transaction().set_context({
'nextrun_querydate': date(2022, 5, 25)}):
Planner.update_next_occurence([job])
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
Planner.update_next_occurence([job], query_date=date(2022, 5, 25))
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
with Transaction().set_context({
'nextrun_querydate': date(2022, 5, 30)}):
Planner.update_next_occurence([job])
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
Planner.update_next_occurence([job], query_date=date(2022, 5, 30))
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
with Transaction().set_context({
'nextrun_querydate': date(2022, 6, 1)}):
Planner.update_next_occurence([job])
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
Planner.update_next_occurence([job], query_date=date(2022, 6, 1))
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
# cron will use 'today+1' as query_date
Planner.update_next_occurence([job], query_date=date(2022, 6, 2))
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 7, 1))
with Transaction().set_context({
'nextrun_querydate': date(2022, 6, 2)}):
Planner.update_next_occurence([job])
self.assertEqual(len(job.nextrun), 1)
self.assertEqual(job.nextrun[0].date, date(2022, 7, 1))
with Transaction().set_context({
'nextrun_querydate': date(2022, 6, 2)}):
# set end-date to check delete of futore runs
# set end-date to check delete of future runs
Planner.write(*[[job], {'end_date': date(2022, 6, 20)}])
# write to planner-record updates nextrun-records too
self.assertEqual(len(job.nextrun), 0)
@with_transaction()
def test_planner_run_cronjobs(self):
""" create job, check cron
"""
Planner = Pool().get('cashbook.planner')
job = self.prep_create_job()
self.assertEqual(
job._compute_dates_by_rrule(
count=1, query_date=date(2022, 5, 1)), [
date(2022, 5, 1)])
with Transaction().set_context({
'nextrun_crondate': date(2022, 5, 24)}):
job, = Planner.search([])
self.assertEqual(job.nextrun[0].date, date(2022, 5, 1))
Planner.cronjob()
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
with Transaction().set_context({
'nextrun_crondate': date(2022, 6, 1)}):
job, = Planner.search([])
self.assertEqual(job.nextrun[0].date, date(2022, 6, 1))
Planner.cronjob()
self.assertEqual(job.nextrun[0].date, date(2022, 7, 1))
# end PlannerTestCase