mirror of
https://github.com/bringout/oca-ocb-mail.git
synced 2026-04-22 04:42:06 +02:00
156 lines
6.4 KiB
Python
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"
|
|
)
|