diff --git a/helpdesk_portal_ticket_priority_form/tests/__init__.py b/helpdesk_portal_ticket_priority_form/tests/__init__.py new file mode 100644 index 0000000..0643380 --- /dev/null +++ b/helpdesk_portal_ticket_priority_form/tests/__init__.py @@ -0,0 +1,4 @@ +# Copyright 2026 Stéphan Sainléger (Elabore) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from . import test_controller diff --git a/helpdesk_portal_ticket_priority_form/tests/test_controller.py b/helpdesk_portal_ticket_priority_form/tests/test_controller.py new file mode 100644 index 0000000..c9f6af3 --- /dev/null +++ b/helpdesk_portal_ticket_priority_form/tests/test_controller.py @@ -0,0 +1,127 @@ +# Copyright 2026 Stéphan Sainléger (Elabore) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import http +from odoo.tests.common import HttpCase, TransactionCase, tagged + + +@tagged("post_install", "-at_install") +class TestPriorityModel(TransactionCase): + def test_ticket_creation_with_priority(self): + category = self.env["helpdesk.ticket.category"].create({"name": "Test"}) + ticket = self.env["helpdesk.ticket"].create( + { + "name": "Test priority ticket", + "description": "desc", + "category_id": category.id, + "priority": "3", + } + ) + self.assertEqual(ticket.priority, "3") + + def test_ticket_creation_without_priority_uses_default(self): + category = self.env["helpdesk.ticket.category"].create({"name": "Test"}) + ticket = self.env["helpdesk.ticket"].create( + { + "name": "Test default priority", + "description": "desc", + "category_id": category.id, + } + ) + self.assertEqual(ticket.priority, "1") + + def test_ticket_priority_selection_values(self): + selection = self.env["helpdesk.ticket"]._fields["priority"].selection + self.assertEqual( + selection, + [ + ("0", "Low"), + ("1", "Medium"), + ("2", "High"), + ("3", "Very High"), + ], + ) + + +@tagged("post_install", "-at_install") +class TestSubmitTicketPriority(HttpCase): + @classmethod + def setUpClass(cls): + super().setUpClass() + cls.category = cls.env["helpdesk.ticket.category"].create({"name": "Test"}) + cls.portal_user = cls.env["res.users"].create( + { + "name": "Portal Test User", + "login": "portal_test_priority", + "password": "portal_test_priority", + "groups_id": [(6, 0, [cls.env.ref("base.group_portal").id])], + } + ) + + def test_new_ticket_form_lists_all_priorities(self): + self.authenticate("portal_test_priority", "portal_test_priority") + response = self.url_open("/new/ticket") + self.assertEqual(response.status_code, 200) + content = response.text + self.assertIn('name="priority"', content) + for value, label in [ + ("0", "Low"), + ("1", "Medium"), + ("2", "High"), + ("3", "Very High"), + ]: + self.assertIn('value="%s"' % value, content) + self.assertIn(label, content) + + def test_submit_ticket_with_high_priority(self): + self.authenticate("portal_test_priority", "portal_test_priority") + self.url_open( + "/submitted/ticket", + data={ + "category": str(self.category.id), + "subject": "High priority ticket", + "description": "Test description", + "priority": "2", + "csrf_token": http.Request.csrf_token(self), + }, + ) + ticket = self.env["helpdesk.ticket"].search( + [("name", "=", "High priority ticket")] + ) + self.assertTrue(ticket) + self.assertEqual(ticket.priority, "2") + + def test_submit_ticket_without_priority(self): + self.authenticate("portal_test_priority", "portal_test_priority") + self.url_open( + "/submitted/ticket", + data={ + "category": str(self.category.id), + "subject": "No priority ticket", + "description": "Test description", + "csrf_token": http.Request.csrf_token(self), + }, + ) + ticket = self.env["helpdesk.ticket"].search( + [("name", "=", "No priority ticket")] + ) + self.assertTrue(ticket) + self.assertEqual(ticket.priority, "0") + + def test_submit_ticket_empty_priority_falls_back(self): + self.authenticate("portal_test_priority", "portal_test_priority") + self.url_open( + "/submitted/ticket", + data={ + "category": str(self.category.id), + "subject": "Empty priority ticket", + "description": "Test description", + "priority": "", + "csrf_token": http.Request.csrf_token(self), + }, + ) + ticket = self.env["helpdesk.ticket"].search( + [("name", "=", "Empty priority ticket")] + ) + self.assertTrue(ticket) + self.assertEqual(ticket.priority, "0")