1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/project_enterprise/tests/test_planning_overlap.py
2024-12-10 09:04:09 +07:00

101 lines
4.1 KiB
Python

# -*- coding: utf-8 -*-
from datetime import datetime
from dateutil.relativedelta import relativedelta
from markupsafe import Markup
from odoo.addons.project.tests.test_project_base import TestProjectCommon
from odoo.fields import Command
class TestPlanningOverlap(TestProjectCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.tomorrow = datetime.now() + relativedelta(days=1)
cls.task_1.write({
'planned_date_begin': cls.tomorrow + relativedelta(hour=8),
'date_deadline': cls.tomorrow + relativedelta(hour=10),
})
def test_same_user_no_overlap(self):
self.task_2.write({
'user_ids': self.user_projectuser,
'planned_date_begin': self.tomorrow + relativedelta(days=+1, hour=8),
'date_deadline': self.tomorrow + relativedelta(days=+1, hour=10),
})
self.assertFalse(self.task_1.planning_overlap)
self.assertFalse(self.task_2.planning_overlap)
search_result = self.env['project.task'].search([('planning_overlap', '=', False)])
self.assertIn(self.task_1, search_result)
self.assertIn(self.task_2, search_result)
def test_different_users_overlap(self):
self.task_2.write({
'planned_date_begin': self.tomorrow + relativedelta(hour=9),
'date_deadline': self.tomorrow + relativedelta(hour=11),
})
self.assertFalse(self.task_1.planning_overlap)
self.assertFalse(self.task_2.planning_overlap)
search_result = self.env['project.task'].search([('planning_overlap', '=', False)])
self.assertIn(self.task_1, search_result)
self.assertIn(self.task_2, search_result)
(self.task_1 + self.task_2).write({
'user_ids': [
Command.link(self.user_projectuser.id),
Command.link(self.user_projectmanager.id),
],
})
self.assertEqual(self.task_1.planning_overlap, Markup('<p>Armande ProjectUser has 1 tasks at the same time. Bastien ProjectManager has 1 tasks at the same time.</p>'))
self.assertEqual(self.task_2.planning_overlap, Markup('<p>Armande ProjectUser has 1 tasks at the same time. Bastien ProjectManager has 1 tasks at the same time.</p>'))
def test_same_user_overlap(self):
self.task_2.write({
'user_ids': self.user_projectuser,
'planned_date_begin': self.tomorrow + relativedelta(hour=9),
'date_deadline': self.tomorrow + relativedelta(hour=11),
})
self.assertEqual(self.task_1.planning_overlap, Markup('<p>Armande ProjectUser has 1 tasks at the same time.</p>'))
self.assertEqual(self.task_2.planning_overlap, Markup('<p>Armande ProjectUser has 1 tasks at the same time.</p>'))
search_result = self.env['project.task'].search([('planning_overlap', '=', True)])
self.assertIn(self.task_1, search_result)
self.assertIn(self.task_2, search_result)
def test_same_user_past_overlap(self):
tasks = self.task_1 + self.task_2
tasks.write({
'user_ids': self.user_projectuser,
'planned_date_begin': self.tomorrow + relativedelta(days=-5, hour=9),
'date_deadline': self.tomorrow + relativedelta(days=-5, hour=11),
})
self.assertFalse(self.task_1.planning_overlap)
self.assertFalse(self.task_2.planning_overlap)
search_result = self.env['project.task'].search([('planning_overlap', '=', False)])
self.assertIn(self.task_1, search_result)
self.assertIn(self.task_2, search_result)
def test_same_user_done_overlap(self):
self.task_2.write({
'user_ids': self.user_projectuser,
'planned_date_begin': self.tomorrow + relativedelta(hour=9),
'date_deadline': self.tomorrow + relativedelta(hour=11),
'state': '1_done',
})
self.assertFalse(self.task_1.planning_overlap)
self.assertFalse(self.task_2.planning_overlap)
search_result = self.env['project.task'].search([('planning_overlap', '=', False)])
self.assertIn(self.task_1, search_result)
self.assertIn(self.task_2, search_result)