bemade-addons/tests/test_task_template.py
2023-06-27 11:23:40 -04:00

97 lines
3.9 KiB
Python

from odoo.tests.common import TransactionCase, HttpCase, tagged
from odoo.exceptions import UserError
class TestTaskTemplateCommon(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
user_group_employee = cls.env.ref('base.group_user')
user_group_project_user = cls.env.ref('project.group_project_user')
user_group_project_manager = cls.env.ref('project.group_project_manager')
user_group_sales_manager = cls.env.ref('sales_team.group_sale_manager')
user_group_sales_user = cls.env.ref('sales_team.group_sale_salesman')
user_product_customer = cls.env.ref('customer_product_code.group_product_customer_code_user')
group_ids = [user_group_employee, user_group_project_user, user_group_project_manager, user_group_sales_user,
user_group_sales_manager]
if user_product_customer:
group_ids.append(user_product_customer)
# Test user with project access rights for the various tests
Users = cls.env['res.users'].with_context({'no_reset_password': True})
cls.user = Users.create({
'name': 'Project Manager',
'login': 'misterpm',
'password': 'misterpm',
'email': 'mrpm@testco.com',
'signature': 'Mr. PM',
'groups_id': [(6, 0, [user_group_employee.id, user_group_project_user.id, user_group_project_manager.id,
user_group_sales_user.id])]
})
hours_uom = cls.env['uom.uom'].search([('name', '=', 'Hour')]) or False
# Test product to use with the various tests
cls.task1 = cls.env['project.task.template'].create({
'name': 'Template 1',
})
cls.project = cls.env['project.project'].create({
'name': 'Test Project',
})
cls.product_task_global_project = cls.env['product.product'].create({
'name': 'Test Product 1',
'type': 'service',
'service_tracking': 'task_global_project',
'project_id': cls.project.id,
'task_template_id': cls.task1.id,
'uom_id': hours_uom.id,
'uom_po_id': hours_uom.id,
})
cls.product_task_in_project = cls.env['product.product'].create({
'name': 'Test Product 2',
'type': 'service',
'service_tracking': 'task_in_project',
'task_template_id': cls.task1.id,
'uom_po_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({
'partner_id': cls.partner.id,
'client_order_ref': 'TEST ORDER',
})
cls.sol_serv_order = cls.env['sale.order.line'].create({
'name': cls.product_task_global_project.name,
'product_id': cls.product_task_global_project.id,
'product_uom_qty': 1,
'product_uom': cls.product_task_global_project.uom_id.id,
'price_unit': 120.0,
'order_id': cls.sale_order.id,
'tax_id': False,
})
@tagged('-at_install', 'post_install')
class TestTaskTemplate(TestTaskTemplateCommon):
def test_delete_task_template(self):
"""User should never be able to delete a task template used on a product"""
with self.assertRaises(UserError):
self.task1.unlink()
def test_order_confirmation_single_task(self):
""" Confirming the order should create a task in the global project. """
self.sale_order.action_confirm()
so = self.sale_order
sol = self.sale_order.order_line[0]
task = sol.task_id
self.assertTrue(task)
@tagged('-at_install', 'post_install')
class TestTaskTemplateTour(HttpCase, TestTaskTemplateCommon):
def test_task_template_tour(self):
self.start_tour('/web', 'task_template_tour',
login='misterpm', )