forked from Mapan/odoo17e
79 lines
3.6 KiB
Python
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'])
|