oca-ocb-mail/odoo-bringout-oca-ocb-im_livechat/im_livechat/tests/test_session_views.py
Ernad Husremovic daa394e8b0 19.0 vanilla
2026-03-09 09:31:39 +01:00

156 lines
6.4 KiB
Python

from odoo import Command
from odoo.tests import new_test_user
from odoo.addons.im_livechat.tests.common import TestImLivechatCommon
from odoo.tests.common import users, tagged
@tagged("-at_install", "post_install")
class TestImLivechatSessionViews(TestImLivechatCommon):
def test_session_history_navigation_back_and_forth(self):
operator = new_test_user(
self.env,
login="operator",
groups="base.group_user,im_livechat.im_livechat_group_manager",
)
self.env["mail.presence"]._update_presence(operator)
self.livechat_channel.user_ids |= operator
self.authenticate(None, None)
data = self.make_jsonrpc_request(
"/im_livechat/get_session",
{
"channel_id": self.livechat_channel.id,
"previous_operator_id": operator.partner_id.id,
},
)
channel = self.env["discuss.channel"].browse(data["channel_id"])
channel.with_user(operator).message_post(body="Hello, how can I help you?")
self._reset_bus()
action = self.env.ref("im_livechat.discuss_channel_action_from_livechat_channel")
self.start_tour(
f"/odoo/livechat/{self.livechat_channel.id}/action-{action.id}",
"im_livechat_history_back_and_forth_tour",
login="operator",
)
@users("admin")
def test_form_view_embed_thread(self):
operator = new_test_user(
self.env,
login="operator",
groups="base.group_user,im_livechat.im_livechat_group_manager",
)
[user_1, user_2] = self.env["res.partner"].create([{"name": "test 1"}, {"name": "test 2"}])
[channel1, channel2] = self.env["discuss.channel"].create(
[
{
"name": "test 1",
"channel_type": "livechat",
"livechat_channel_id": self.livechat_channel.id,
"livechat_operator_id": operator.partner_id.id,
"channel_member_ids": [Command.create({"partner_id": user_1.id})],
},
{
"name": "test 2",
"channel_type": "livechat",
"livechat_channel_id": self.livechat_channel.id,
"livechat_operator_id": operator.partner_id.id,
"channel_member_ids": [Command.create({"partner_id": user_2.id})],
},
]
)
channel1.message_post(
body="Test Channel 1 Msg", message_type="comment", subtype_xmlid="mail.mt_comment"
)
channel2.message_post(
body="Test Channel 2 Msg", message_type="comment", subtype_xmlid="mail.mt_comment"
)
action = self.env.ref("im_livechat.discuss_channel_action_from_livechat_channel")
self.start_tour(
f"/odoo/livechat/{self.livechat_channel.id}/action-{action.id}",
"im_livechat_session_history_open",
login="operator",
)
def test_partner_display_name(self):
user = new_test_user(self.env, login="agent", name="john")
company = self.env["res.partner"].create({"name": "TestCompany", "is_company": True})
user.partner_id.parent_id = company.id
self.assertEqual(
user.with_context(im_livechat_hide_partner_company=True).partner_id.display_name,
"john",
)
self.assertEqual(user.partner_id.display_name, "TestCompany, john")
class TestImLivechatLookingForHelpViews(TestImLivechatSessionViews):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.bob = new_test_user(
cls.env,
login="bob_looking_for_help",
groups="base.group_user,im_livechat.im_livechat_group_user",
)
cls.livechat_channel.user_ids |= cls.bob
cls.looking_for_help_action = cls.env.ref(
"im_livechat.discuss_channel_looking_for_help_action"
)
def start_needhelp_session(self, guest_name=None):
self.authenticate(None, None)
cookies = {}
if guest_name:
guest = self.env["mail.guest"].create({"name": guest_name})
cookies = {guest._cookie_name: guest._format_auth_cookie()}
data = self.make_jsonrpc_request(
"/im_livechat/get_session",
{
"channel_id": self.livechat_channel.id,
"previous_operator_id": self.bob.partner_id.id,
},
cookies=cookies,
)
chat = self.env["discuss.channel"].browse(data["channel_id"])
chat.livechat_status = "need_help"
return chat
def test_looking_for_help_list_real_time_update(self):
self.start_needhelp_session()
self.start_tour(
f"/odoo/action-{self.looking_for_help_action.id}",
"im_livechat.looking_for_help_list_real_time_update_tour",
login="bob_looking_for_help",
)
def test_looking_for_help_kanban_real_time_update(self):
self.start_needhelp_session()
self.start_tour(
f"/odoo/action-{self.looking_for_help_action.id}?view_type=kanban",
"im_livechat.looking_for_help_kanban_real_time_update_tour",
login="bob_looking_for_help",
)
def test_looking_for_help_tags_real_time_update(self):
self.start_needhelp_session()
self.start_tour(
f"/odoo/action-{self.looking_for_help_action.id}",
"im_livechat.looking_for_help_tags_real_time_update_tour",
login="bob_looking_for_help",
)
def test_looking_for_help_discuss_category(self):
self.env["discuss.channel"].search([("livechat_status", "=", "need_help")]).unlink()
agent = new_test_user(self.env, "agent", groups="im_livechat.im_livechat_group_user")
accounting_expertise, sales_expertise = self.env["im_livechat.expertise"].create(
[{"name": "Accounting"}, {"name": "Sales"}],
)
agent.livechat_expertise_ids = sales_expertise
accounting_chat = self.start_needhelp_session(guest_name="Visitor Accounting")
accounting_chat.livechat_expertise_ids = accounting_expertise
sales_chat = self.start_needhelp_session(guest_name="Visitor Sales")
sales_chat.livechat_expertise_ids = sales_expertise
self._reset_bus()
self.start_tour(
"/odoo/discuss", "im_livechat.looking_for_help_discuss_category_tour", login="agent"
)