bemade_fsm: Upgrades to the tests (figured out how to avoid expected errors being counted by the testing framework).

This commit is contained in:
Marc Durepos 2023-06-09 11:54:55 -04:00
parent b2a42e4ce8
commit 972aa554cd
12 changed files with 53 additions and 27 deletions

View file

@ -14,7 +14,7 @@
], ],
'assets': { 'assets': {
'web.assets_tests': [ 'web.assets_tests': [
'durpro_fsm/static/tests/tours/task_template_tour.js', 'bemade_fsm/static/tests/tours/task_template_tour.js',
], ],
}, },
'installable': True, 'installable': True,

Binary file not shown.

View file

@ -14,7 +14,7 @@ class TaskTemplate(models.Model):
customer = fields.Many2one("res.partner", string="Default Customer", help="Default customer for tasks created from this template.") customer = fields.Many2one("res.partner", string="Default Customer", help="Default customer for tasks created from this template.")
project = fields.Many2one("project.project", string="Default Project", help="Default project for tasks created from this template.") project = fields.Many2one("project.project", string="Default Project", help="Default project for tasks created from this template.")
tags = fields.Many2many("project.tags", string="Default Tags", help="Default tags for tasks created from this template.") tags = fields.Many2many("project.tags", string="Default Tags", help="Default tags for tasks created from this template.")
parent = fields.Many2one("project.task.template", string="Parent Task Template") parent = fields.Many2one("project.task.template", string="Parent Task Template", ondelete='cascade')
subtasks = fields.One2many("project.task.template", inverse_name="parent", string="Subtask Templates") subtasks = fields.One2many("project.task.template", inverse_name="parent", string="Subtask Templates")
sequence = fields.Integer(string="Sequence") sequence = fields.Integer(string="Sequence")
company_id = fields.Many2one("res.company", string="Company", index=1, default=_current_company) company_id = fields.Many2one("res.company", string="Company", index=1, default=_current_company)

View file

@ -1,3 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_durpro_fsm_task_template,durpro_fsm_task_template,model_project_task_template,project.group_project_manager,1,1,1,1 access_bemade_fsm_task_template,bemade_fsm_task_template,model_project_task_template,project.group_project_manager,1,1,1,1
access_durpro_fsm_task_template,durpro_fsm_task_template,model_project_task_template,project.group_project_user,1,1,1,1 access_bemade_fsm_task_template,bemade_fsm_task_template,model_project_task_template,project.group_project_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_durpro_fsm_task_template access_bemade_fsm_task_template durpro_fsm_task_template bemade_fsm_task_template model_project_task_template project.group_project_manager 1 1 1 1
3 access_durpro_fsm_task_template access_bemade_fsm_task_template durpro_fsm_task_template bemade_fsm_task_template model_project_task_template project.group_project_user 1 1 1 1

View file

@ -10,7 +10,7 @@ tour.register('task_template_tour', {
trigger: '.o_app[data-menu-xmlid="project.menu_main_pm"]', trigger: '.o_app[data-menu-xmlid="project.menu_main_pm"]',
}, { }, {
content: 'Open the task templates list view.', content: 'Open the task templates list view.',
trigger: '.o_nav_entry[data-menu-xmlid="durpro_fsm.task_template_menu"]', trigger: '.o_nav_entry[data-menu-xmlid="bemade_fsm.task_template_menu"]',
}, { }, {
content: 'Open the existing task template.', content: 'Open the existing task template.',
trigger: '.o_data_cell:contains("Template 1"):parent()', trigger: '.o_data_cell:contains("Template 1"):parent()',

View file

@ -1,5 +1,8 @@
from odoo.tests.common import TransactionCase, HttpCase, tagged from odoo.tests.common import TransactionCase, HttpCase, tagged
from odoo.exceptions import UserError from odoo.tools import mute_logger
from odoo.exceptions import MissingError
from odoo import Command
from psycopg2.errors import ForeignKeyViolation
class TestTaskTemplateCommon(TransactionCase): class TestTaskTemplateCommon(TransactionCase):
@ -55,19 +58,43 @@ class TestTaskTemplateCommon(TransactionCase):
'uom_po_id': hours_uom.id, 'uom_po_id': hours_uom.id,
'uom_id': hours_uom.id, 'uom_id': hours_uom.id,
}) })
cls.partner = cls.env['res.partner'].create({'name': 'Test Partner'})
cls.sale_order = cls.env['sale.order'].create({ # Set up a task template tree with 2 children and 1 grandchild
'partner_id': cls.partner.id, cls.parent_task = cls.env['project.task.template'].create({
'client_order_ref': 'TEST ORDER', 'name': 'Parent Template',
}) })
cls.sol_serv_order = cls.env['sale.order.line'].create({ cls.child_task_1 = cls.env['project.task.template'].create({
'name': cls.product_task_global_project.name, 'name': 'Child Template 1',
'product_id': cls.product_task_global_project.id, 'parent': cls.parent_task.id,
'product_uom_qty': 1, })
'product_uom': cls.product_task_global_project.uom_id.id, cls.child_task_2 = cls.env['project.task.template'].create({
'price_unit': 120.0, 'name': 'Child Template 2',
'order_id': cls.sale_order.id, 'parent': cls.parent_task.id,
'tax_id': False, })
cls.parent_task.write({'subtasks': [Command.set([cls.child_task_1.id, cls.child_task_2.id])]})
cls.grandchild_task = cls.env['project.task.template'].create({
'name': 'Grandchild Template',
'parent': cls.child_task_2.id
})
cls.child_task_2.write({'subtasks': [Command.set([cls.grandchild_task.id])]})
# Create products using the task tree we just created
cls.product_task_tree_global_project = cls.env['product.product'].create({
'name': 'Test Product 3',
'type': 'service',
'service_tracking': 'task_global_project',
'project_id': cls.project.id,
'task_template_id': cls.parent_task.id,
'uom_id': hours_uom.id,
'uom_po_id': hours_uom.id,
})
cls.product_task_tree_in_project = cls.env['product.product'].create({
'name': 'Test Product 2',
'type': 'service',
'service_tracking': 'task_in_project',
'task_template_id': cls.parent_task.id,
'uom_po_id': hours_uom.id,
'uom_id': hours_uom.id,
}) })
@ -76,17 +103,16 @@ class TestTaskTemplate(TestTaskTemplateCommon):
def test_delete_task_template(self): def test_delete_task_template(self):
"""User should never be able to delete a task template used on a product""" """User should never be able to delete a task template used on a product"""
with self.assertRaises(UserError): with self.assertRaises(ForeignKeyViolation):
self.task1.unlink() self.task1.unlink()
def test_order_confirmation_single_task(self): def test_delete_subtask_template(self):
""" Confirming the order should create a task in the global project. """ """ Deletion of a child task should be OK even if the parent is on a product. Children of the deleted
self.sale_order.action_confirm() subtask should be deleted."""
so = self.sale_order self.child_task_2.unlink()
sol = self.sale_order.order_line[0] # Reading deleted child's name field should be impossible
task = sol.task_id with self.assertRaises(MissingError):
self.assertTrue(task) test = self.grandchild_task.name
@tagged('-at_install', 'post_install') @tagged('-at_install', 'post_install')