# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details
from odoo.tests import tagged, TransactionCase
@tagged('post_install', '-at_install')
class TestWorksheet(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.worksheet_template = cls.env['worksheet.template'].create({
'name': 'New worksheet',
'color': 4,
'res_model': 'project.task',
})
cls.fsm_project = cls.env['project.project'].create({
'name': 'Field Service',
'is_fsm': True,
'company_id': cls.env.company.id,
})
cls.second_fsm_project = cls.env['project.project'].create({
'name': 'Field Service',
'is_fsm': True,
'allow_worksheets': True,
'worksheet_template_id': cls.worksheet_template.id,
'company_id': cls.env.company.id,
})
cls.partner = cls.env['res.partner'].create({'name': 'Costumer A'})
cls.task = cls.env['project.task'].create({
'name': 'Fsm task',
'project_id': cls.fsm_project.id,
'partner_id': cls.partner.id,
})
def test_project_worksheet_template_propagation(self):
"""
1) Test project template propagation when changing task project with empty worksheet template
2) Test project template propagation when creating new task
"""
self.task.write({
'worksheet_template_id': False,
})
self.assertFalse(self.task.worksheet_template_id)
self.task.write({
'project_id': self.second_fsm_project.id,
})
self.assertEqual(self.task.worksheet_template_id, self.second_fsm_project.worksheet_template_id)
secondTask = self.env['project.task'].create({
'name': 'Fsm task',
'project_id': self.second_fsm_project.id,
'partner_id': self.partner.id,
})
self.assertEqual(secondTask.worksheet_template_id, self.second_fsm_project.worksheet_template_id)
self.assertTrue(secondTask.allow_worksheets)
def test_subtasks_worksheet_template_id_duplicate(self):
self.task.write({
'project_id': self.second_fsm_project.id,
})
self.first_subtask = self.env['project.task'].create({
'parent_id': self.task.id,
'name': '%s: substask1' % (self.task.name,),
})
self.second_subtask = self.env['project.task'].create({
'parent_id': self.task.id,
'name': '%s: subtask2' % (self.task.name,),
'worksheet_template_id': self.worksheet_template.id
})
subtask1_worksheet_template_id = self.second_fsm_project.tasks[-1].child_ids[0].worksheet_template_id
subtask2_worksheet_template_id = self.second_fsm_project.tasks[-1].child_ids[1].worksheet_template_id
task_copy = self.second_fsm_project.tasks[-1].copy()
subtask1_copy_worksheet_template_id = task_copy.child_ids[0].worksheet_template_id
subtask2_copy_worksheet_template_id = task_copy.child_ids[1].worksheet_template_id
self.assertEqual(subtask1_copy_worksheet_template_id, subtask1_worksheet_template_id, "When duplicating a task, subtasks should keep the same worksheet template that we set before.")
self.assertEqual(subtask2_copy_worksheet_template_id, subtask2_worksheet_template_id, "When duplicating a task, subtasks should keep the same worksheet template that we set before.")
def test_project_worksheets(self):
fsm_project = self.env['project.project'].create({
'name': 'Test FSM Project',
'is_fsm': True,
'company_id': self.env.company.id,
})
self.assertTrue(fsm_project.allow_worksheets, "By default, worksheet should be enable for Fsm project")
def test_report_arch_invisible_field(self):
report_view = self.worksheet_template.report_view_id
self.assertXMLEqual(report_view.arch, f"""
""")
form_view = self.env["ir.ui.view"].search([("model", "=", self.worksheet_template.model_id.model), ("type", "=", "form")], limit=1)[0]
self.env["ir.ui.view"].create({
"name": "test inherit",
"inherit_id": form_view.id,
"model": form_view.model,
"mode": "extension",
"arch": """
1
"""
})
self.worksheet_template._generate_qweb_report_template(form_view.id)
self.assertXMLEqual(report_view.arch, f"""
""")