mirror of
https://github.com/bringout/oca-ocb-project.git
synced 2026-04-20 02:02:04 +02:00
96 lines
4.6 KiB
Python
96 lines
4.6 KiB
Python
from odoo.addons.project.tests.test_project_base import TestProjectCommon
|
|
|
|
|
|
class TestTaskTemplates(TestProjectCommon):
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.project_with_templates = cls.env["project.project"].create({
|
|
"name": "Project with Task Template",
|
|
})
|
|
cls.template_task = cls.env["project.task"].create({
|
|
"name": "Template",
|
|
"project_id": cls.project_with_templates.id,
|
|
"is_template": True,
|
|
"description": "Template description",
|
|
"partner_id": cls.partner_1.id,
|
|
})
|
|
cls.child_task = cls.env["project.task"].create({
|
|
"name": "Child Task",
|
|
"parent_id": cls.template_task.id,
|
|
"description": "Child description",
|
|
"partner_id": cls.partner_2.id,
|
|
})
|
|
|
|
def test_create_from_template(self):
|
|
"""
|
|
Creating a task through the action should result in a non template copy, with no partner_id
|
|
"""
|
|
task_id = self.template_task.action_create_from_template()
|
|
task = self.env["project.task"].browse(task_id)
|
|
self.assertFalse(task.is_template, "The created task should be a normal task and not a template.")
|
|
self.assertFalse(task.partner_id, "The created task should not have a partner.")
|
|
|
|
self.assertEqual(len(task.child_ids), 1, "The child of the template should be copied too.")
|
|
child_task = task.child_ids
|
|
self.assertFalse(child_task.is_template, "The child task should still not be a template.")
|
|
self.assertFalse(child_task.partner_id, "The child task should also not have a partner.")
|
|
|
|
# With a partner set on the project, new tasks should get the partner too, even if created from a template
|
|
self.project_with_templates.partner_id = self.partner_3
|
|
|
|
task_id = self.template_task.action_create_from_template()
|
|
task = self.env["project.task"].browse(task_id)
|
|
self.assertEqual(task.partner_id, self.partner_3, "The created task should have the same partner as the project.")
|
|
child_task = task.child_ids
|
|
self.assertEqual(child_task.partner_id, self.partner_3, "The child of the created task should have the same partner as the project.")
|
|
|
|
def test_copy_template(self):
|
|
"""
|
|
A copy of a template should be a template
|
|
"""
|
|
copied_template = self.template_task.copy()
|
|
self.assertTrue(copied_template.is_template, "The copy of the template should also be a template.")
|
|
self.assertEqual(len(copied_template.child_ids), 1, "The child of the template should be copied too.")
|
|
copied_template_child_task = copied_template.child_ids
|
|
self.assertFalse(copied_template_child_task.is_template, "The child of the copy should still not be a template.")
|
|
|
|
def test_copy_project_with_templates(self):
|
|
"""
|
|
Copying a project should also copy its task templates
|
|
"""
|
|
copied_project = self.project_with_templates.copy()
|
|
task = self.env["project.task"].search([("project_id", "=", copied_project.id)], order="id asc", limit=1)
|
|
self.assertTrue(task, "The copied project should contain a copy of the template.")
|
|
self.assertTrue(task.is_template, "The copied template should still be a template.")
|
|
|
|
def test_has_template_ancestor(self):
|
|
self.assertTrue(self.template_task.has_template_ancestor, "The template is a template.")
|
|
self.assertTrue(self.child_task.has_template_ancestor, "The child of the template has a template ancestor.")
|
|
|
|
task = self.env["project.task"].create({
|
|
"name": "Task",
|
|
"project_id": self.project_with_templates.id,
|
|
})
|
|
self.assertFalse(task.has_template_ancestor, "The task does not have ancestors and is not a template.")
|
|
|
|
child = self.env["project.task"].create({
|
|
"name": "Child",
|
|
"parent_id": task.id,
|
|
})
|
|
self.assertFalse(child.has_template_ancestor, "The task has ancestors, but none of them are templates.")
|
|
|
|
self.assertCountEqual(
|
|
self.env["project.task"].search(
|
|
[('project_id', '=', self.project_with_templates.id), ('has_template_ancestor', '=', True)],
|
|
),
|
|
self.template_task | self.child_task,
|
|
"The search should find the template and its child",
|
|
)
|
|
self.assertCountEqual(
|
|
self.env["project.task"].search(
|
|
[('project_id', '=', self.project_with_templates.id), ('has_template_ancestor', '=', False)],
|
|
),
|
|
task | child,
|
|
"The search should find the non template task and its child",
|
|
)
|