oca-technical/odoo-bringout-oca-server-ux-confirmation_wizard/confirmation_wizard/tests/test_confirmation_wizard.py
2025-08-29 15:43:03 +02:00

98 lines
3.5 KiB
Python

from odoo.exceptions import UserError
from odoo.tests import TransactionCase
class TestConfirmationWizard(TransactionCase):
def setUp(self):
super().setUp()
self.partner = self.env["res.partner"].create(
{
"name": "Test Partner",
}
)
def test_confirm_message(self):
"""Test flow when create confirmation wizard with method"""
confirmation_wizard_obj = self.env["confirmation.wizard"]
# Default behavior
action = confirmation_wizard_obj.confirm_message(
"Message Test",
self.partner,
)
excepted_action = self.env["ir.actions.actions"]._for_xml_id(
"confirmation_wizard.confirmation_wizard_action"
)
excepted_action["context"] = self.env.context
# Wizard with title and context
excepted_title = "Confirm Wizard"
action = confirmation_wizard_obj.with_context(hide_cancel=True).confirm_message(
"Message Test", self.partner, title=excepted_title
)
self.assertEqual(action["name"], excepted_title, "Title must be the same")
self.assertTrue(
action["context"]["hide_cancel"], "Invisible Cancel must be True"
)
def test_confirm_no_action_message(self):
"""Test flow when create confirmation wizard with window close"""
confirmation_wizard_obj = self.env["confirmation.wizard"]
excepted_title = "Confirm Wizard"
action = confirmation_wizard_obj.confirm_message(
"Message Test", self.partner, title=excepted_title
)
self.assertEqual(action["name"], excepted_title, "Title must be the same")
def test_action_confirm_method(self):
"""Test flow when confirm wizard with return type method"""
vals = {
"message": "Message Test",
"res_ids": "",
"return_type": "method",
"res_model": "res.partner",
"callback_method": "",
"callback_params": {},
}
wizard = self.env["confirmation.wizard"].create(vals)
with self.assertRaises(UserError) as e:
wizard.action_confirm()
self.assertEqual(
str(e.exception), "Records (IDS: '') not found in model 'res.partner'."
)
vals1 = {**vals, "res_ids": ",".join(map(str, self.partner.ids))}
wizard = self.env["confirmation.wizard"].create(vals1)
with self.assertRaises(UserError) as e:
wizard.action_confirm()
self.assertEqual(
str(e.exception), "Method '' is not found on model 'res.partner'."
)
vals2 = {
**vals1,
"callback_method": "write",
"callback_params": {"vals": {"name": "New Partner #1"}},
}
wizard = self.env["confirmation.wizard"].create(vals2)
result = wizard.action_confirm()
self.assertTrue(result, "Result must be True")
self.assertEqual(
self.partner.name,
"New Partner #1",
"Partner name must be equal to 'New Partner #1'",
)
def test_action_confirm_window_close(self):
"""Test flow when confirm wizard with return type window close"""
wizard = self.env["confirmation.wizard"].create(
{
"message": "Message Confirmation Text",
"return_type": "window_close",
}
)
result = wizard.action_confirm()
self.assertDictEqual(
result, {"type": "ir.actions.act_window_close"}, "Dicts must be the same"
)