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

79 lines
3.6 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.helpdesk.tests.common import HelpdeskCommon
from odoo.tests.common import Form
class TestHelpdeskFsm(HelpdeskCommon):
def test_helpdesk_fsm(self):
self.test_team.use_fsm = True
ticket = self.env['helpdesk.ticket'].create({
'name': 'test',
'partner_id': self.partner.id,
'team_id': self.test_team.id,
})
task_form = Form(self.env['helpdesk.create.fsm.task'].with_context(default_helpdesk_ticket_id=ticket.id))
task_form.name = ticket.name
task_form.partner_id = self.partner
task = task_form.save().action_generate_task()
self.assertTrue(task.is_fsm, 'The created task should be in an fsm project.')
self.assertEqual(task.name, ticket.name, 'The created task should have the same name as the ticket.')
self.assertEqual(task.partner_id, ticket.partner_id, 'The created task should have the same customer as the ticket.')
self.assertEqual(task.helpdesk_ticket_id, ticket, 'The created task should be linked to the ticket.')
task.action_fsm_validate()
last_message = ticket.message_ids[0].body
self.assertTrue(task.name in last_message, 'Marking the task as done should be logged on the ticket.')
def test_fsm_project(self):
# Enable field service on the helpdesk team
self.test_team.use_fsm = True
# Find the first fsm project
fsm_project = self.env['project.project'].search([('is_fsm', '=', True), ('company_id', '=', self.test_team.company_id.id)], limit=1)
# Default fsm_project should be the first fsm project with the oldest id
self.assertEqual(self.test_team.fsm_project_id, fsm_project,
"The default fsm project should be from the same company.")
def test_fsm_project_multicompany(self):
extra_company = self.env['res.company'].create({'name': 'Extra Company'})
fsm_project = self.env['project.project'].search([('is_fsm', '=', True), ('company_id', '=', extra_company.id)], limit=1)
self.test_team.write({'company_id': extra_company.id})
self.test_team.use_fsm = True
self.assertEqual(self.test_team.fsm_project_id, fsm_project,
"The default fsm project should be from the same company.")
def test_fsm_task_invited_user(self):
invited_team = self.env['helpdesk.team'].create({
'name': 'Test team invited internal',
'use_fsm': True,
'privacy_visibility': 'invited_internal'
})
ticket = self.env['helpdesk.ticket'].with_user(self.helpdesk_manager).create({
'name': 'Ticket',
'partner_id': self.partner.id,
'team_id': invited_team.id,
'user_id': self.helpdesk_user.id,
})
ticket_form = Form(ticket)
ticket = ticket_form.save()
action = ticket.with_user(self.helpdesk_user).action_generate_fsm_task() # should not raise AccessError
action_context = action['context']
self.assertEqual(action_context['default_project_id'], ticket.team_id.fsm_project_id.id)
self.assertEqual(action_context['default_helpdesk_ticket_id'], ticket.id)
def test_generate_fsm_task_no_partner(self):
self.test_team.use_fsm = True
ticket = self.env['helpdesk.ticket'].with_user(self.helpdesk_manager).create({
'name': 'Ticket',
'team_id': self.test_team.id,
'user_id': self.helpdesk_user.id,
})
action = ticket.action_generate_fsm_task()
self.assertFalse(action['context']['default_partner_id'])