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

68 lines
2.4 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests.common import TransactionCase
from freezegun import freeze_time
class HelpdeskSLA(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.test_team = cls.env['helpdesk.team'].create(
{
'name': 'Test Team SLA',
'use_sla': True,
})
cls.stage_new, cls.stage_progress = cls.env['helpdesk.stage'].create([{
'name': 'New',
'sequence': 10,
'team_ids': [cls.test_team.id],
}, {
'name': 'In Progress',
'sequence': 20,
'team_ids': [cls.test_team.id],
}])
cls.sla = cls.env['helpdesk.sla'].create({
'name': 'SLA',
'team_id': cls.test_team.id,
'time': 32,
'stage_id': cls.stage_progress.id,
'priority': '1',
})
def create_ticket(self, team, *arg, **kwargs):
default_values = {
'name': "Help me",
'team_id': team.id,
'stage_id': self.stage_new.id,
'priority': '1',
}
values = dict(default_values, **kwargs)
return self.env['helpdesk.ticket'].create(values)
def test_merge_ticket_sla(self):
follower_1, follower_2 = self.env['res.partner'].create([
{'name': 'Follower 1'},
{'name': 'Follower 2'},
])
with freeze_time('2024-09-03 15:00:00'):
source_ticket = self.create_ticket(team=self.test_team, sla_ids=self.sla)
source_ticket.message_subscribe([follower_1.id])
with freeze_time('2024-09-02 15:00:00'):
dest_ticket = self.create_ticket(team=self.test_team, sla_ids=self.sla)
dest_ticket.message_subscribe([follower_1.id, follower_2.id])
nearest_deadline = min(source_ticket.sla_status_ids.deadline, dest_ticket.sla_status_ids.deadline)
self.env['helpdesk.ticket']._merge_method(dest_ticket, source_ticket)
self.assertEqual(len(dest_ticket.message_follower_ids), 2, 'Follower 2 should be added')
self.assertEqual(len(dest_ticket.sla_ids), 1, 'Same SLA policy should not be duplicated')
self.assertEqual(len(dest_ticket.sla_status_ids), 1, 'Only one SLA should be kept')
self.assertEqual(dest_ticket.sla_status_ids.deadline, nearest_deadline, 'Only the SLA with the nearest deadline should be kept')