# Copyright 2026 Quentin Mondot # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from datetime import timedelta from odoo import fields from odoo.tests.common import TransactionCase class TestHelpdeskTicketDeadline(TransactionCase): """Tests for the helpdesk_ticket_deadline module.""" @classmethod def setUpClass(cls): super().setUpClass() cls.HelpdeskTicket = cls.env["helpdesk.ticket"] def _create_ticket(self, **kwargs): """Create a ticket named "Deadline test ticket" with given values. :param kwargs: extra values passed to ``helpdesk.ticket.create`` :return: the created ``helpdesk.ticket`` record """ vals = {"name": "Deadline test ticket", "description": "test"} vals.update(kwargs) return self.HelpdeskTicket.create(vals) def test_field_exists(self): """date_deadline is a stored Date field on helpdesk.ticket.""" field = self.HelpdeskTicket._fields["date_deadline"] self.assertEqual(field.type, "date") self.assertTrue(field.store) def test_date_is_stored(self): """A deadline set on a ticket is read back unchanged.""" deadline = fields.Date.today() + timedelta(days=3) ticket = self._create_ticket(date_deadline=deadline) self.assertEqual(ticket.date_deadline, deadline) def test_overdue_search_domain(self): """Searching date_deadline < today returns only overdue tickets.""" overdue = self._create_ticket( date_deadline=fields.Date.today() - timedelta(days=2) ) future = self._create_ticket( date_deadline=fields.Date.today() + timedelta(days=2) ) results = self.HelpdeskTicket.search( [("date_deadline", "<", fields.Date.today())] ) self.assertIn(overdue, results) self.assertNotIn(future, results) def test_deadline_is_tracked(self): """date_deadline is flagged as tracked so changes are logged.""" self.assertTrue(self.HelpdeskTicket._fields["date_deadline"].tracking)