Files
helpdesk-tools/helpdesk_ticket_deadline/tests/test_helpdesk_ticket_deadline.py
Quentin Mondot 26c20e2fe3
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 1m34s
tests / test (pull_request) Successful in 1m10s
[ADD] helpdesk_ticket_deadline: add a manual deadline on tickets
This module adds a simple, manually filled ``date_deadline``
Date field, tracked in the chatter, with an overdue flag,
a red kanban decoration and search filters (overdue, due
today, group by deadline).
2026-10-01 17:54:12 +02:00

57 lines
2.1 KiB
Python

# 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)