summaryrefslogtreecommitdiff
path: root/addons/project/tests/test_project_recurrence.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/project/tests/test_project_recurrence.py')
-rw-r--r--addons/project/tests/test_project_recurrence.py32
1 files changed, 19 insertions, 13 deletions
diff --git a/addons/project/tests/test_project_recurrence.py b/addons/project/tests/test_project_recurrence.py
index b207e7a9522..4cf13a730af 100644
--- a/addons/project/tests/test_project_recurrence.py
+++ b/addons/project/tests/test_project_recurrence.py
@@ -7,8 +7,8 @@ from odoo import fields
from datetime import date, datetime
from dateutil.rrule import MO, TU, WE, TH, FR, SA, SU
+from freezegun import freeze_time
-from unittest.mock import patch
class TestProjectrecurrence(SavepointCase):
@classmethod
@@ -32,7 +32,7 @@ class TestProjectrecurrence(SavepointCase):
self.env.cr.execute("UPDATE project_task SET create_date=%s WHERE id=%s", (create_date, task_id))
def test_recurrence_simple(self):
- with patch.object(fields.Date, 'today', lambda: datetime(2020, 2, 1)):
+ with freeze_time("2020-02-01"):
with Form(self.env['project.task']) as form:
form.name = 'test recurring task'
form.project_id = self.project_recurring
@@ -57,7 +57,8 @@ class TestProjectrecurrence(SavepointCase):
self.assertFalse(bool(task.recurrence_id), 'the recurrence should be deleted')
def test_recurrence_cron(self):
- with patch.object(fields.Date, 'today', lambda: datetime(2020, 1, 1)):
+ domain = [('project_id', '=', self.project_recurring.id)]
+ with freeze_time("2020-01-01"):
form = Form(self.env['project.task'])
form.name = 'test recurring task'
form.description = 'my super recurring task bla bla bla'
@@ -75,22 +76,27 @@ class TestProjectrecurrence(SavepointCase):
task.planned_hours = 2
self.assertEqual(task.recurrence_id.next_recurrence_date, date(2020, 1, 15))
- self.assertEqual(self.env['project.task'].search_count([('project_id', '=', self.project_recurring.id)]), 1)
+ self.assertEqual(self.env['project.task'].search_count(domain), 1)
self.env['project.task.recurrence']._cron_create_recurring_tasks()
- self.assertEqual(self.env['project.task'].search_count([('project_id', '=', self.project_recurring.id)]), 1, 'no extra task should be created')
+ self.assertEqual(self.env['project.task'].search_count(domain), 1, 'no extra task should be created')
self.assertEqual(task.recurrence_id.recurrence_left, 2)
- with patch.object(fields.Date, 'today', lambda: datetime(2020, 1, 15)):
- self.assertEqual(self.env['project.task'].search_count([('project_id', '=', self.project_recurring.id)]), 1)
+ with freeze_time("2020-01-15"):
+ self.assertEqual(self.env['project.task'].search_count(domain), 1)
self.env['project.task.recurrence']._cron_create_recurring_tasks()
- self.assertEqual(self.env['project.task'].search_count([('project_id', '=', self.project_recurring.id)]), 2)
+ self.assertEqual(self.env['project.task'].search_count(domain), 2)
self.assertEqual(task.recurrence_id.recurrence_left, 1)
- with patch.object(fields.Date, 'today', lambda: datetime(2020, 2, 15)):
+ with freeze_time("2020-02-15"):
self.env['project.task.recurrence']._cron_create_recurring_tasks()
+ self.assertEqual(self.env['project.task'].search_count(domain), 3)
self.assertEqual(task.recurrence_id.recurrence_left, 0)
+ self.env['project.task.recurrence']._cron_create_recurring_tasks()
+ self.assertEqual(self.env['project.task'].search_count(domain), 3)
+ self.assertEqual(task.recurrence_id.recurrence_left, 0)
+
- tasks = self.env['project.task'].search([('project_id', '=', self.project_recurring.id)])
+ tasks = self.env['project.task'].search(domain)
self.assertEqual(len(tasks), 3)
self.assertTrue(bool(tasks[2].date_deadline))
@@ -100,7 +106,7 @@ class TestProjectrecurrence(SavepointCase):
self.assertTrue(tasks[0][f] == tasks[1][f] == tasks[2][f], "Field %s should have been copied" % f)
def test_recurrence_update_task(self):
- with patch.object(fields.Date, 'today', lambda: datetime(2020, 1, 1)):
+ with freeze_time("2020-01-01"):
task = self.env['project.task'].create({
'name': 'test recurring task',
'project_id': self.project_recurring.id,
@@ -112,10 +118,10 @@ class TestProjectrecurrence(SavepointCase):
'mon': True,
})
- with patch.object(fields.Date, 'today', lambda: datetime(2020, 1, 6)):
+ with freeze_time("2020-01-06"):
self.env['project.task.recurrence']._cron_create_recurring_tasks()
- with patch.object(fields.Date, 'today', lambda: datetime(2020, 1, 13)):
+ with freeze_time("2020-01-13"):
self.env['project.task.recurrence']._cron_create_recurring_tasks()
task_c, task_b, task_a = self.env['project.task'].search([('project_id', '=', self.project_recurring.id)])