summaryrefslogtreecommitdiff
path: root/addons/im_livechat/tests
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/im_livechat/tests
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/im_livechat/tests')
-rw-r--r--addons/im_livechat/tests/__init__.py4
-rw-r--r--addons/im_livechat/tests/test_get_mail_channel.py94
2 files changed, 98 insertions, 0 deletions
diff --git a/addons/im_livechat/tests/__init__.py b/addons/im_livechat/tests/__init__.py
new file mode 100644
index 00000000..a22a6703
--- /dev/null
+++ b/addons/im_livechat/tests/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import test_get_mail_channel
diff --git a/addons/im_livechat/tests/test_get_mail_channel.py b/addons/im_livechat/tests/test_get_mail_channel.py
new file mode 100644
index 00000000..30deee55
--- /dev/null
+++ b/addons/im_livechat/tests/test_get_mail_channel.py
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.tests.common import TransactionCase
+
+
+class TestGetMailChannel(TransactionCase):
+ def setUp(self):
+ super(TestGetMailChannel, self).setUp()
+ self.operators = self.env['res.users'].create([{
+ 'name': 'Michel',
+ 'login': 'michel'
+ }, {
+ 'name': 'Paul',
+ 'login': 'paul'
+ }, {
+ 'name': 'Pierre',
+ 'login': 'pierre'
+ }, {
+ 'name': 'Jean',
+ 'login': 'jean'
+ }, {
+ 'name': 'Georges',
+ 'login': 'georges'
+ }])
+
+ self.visitor_user = self.env['res.users'].create({
+ 'name': 'Rajesh',
+ 'login': 'rajesh',
+ 'country_id': self.ref('base.in'),
+ })
+
+ self.livechat_channel = self.env['im_livechat.channel'].create({
+ 'name': 'The channel',
+ 'user_ids': [(6, 0, self.operators.ids)]
+ })
+
+ operators = self.operators
+ def get_available_users(self):
+ return operators
+
+ self.patch(type(self.env['im_livechat.channel']), '_get_available_users', get_available_users)
+
+ def test_get_mail_channel(self):
+ """For a livechat with 5 available operators, we open 5 channels 5 times (25 channels total).
+ For every 5 channels opening, we check that all operators were assigned.
+ """
+
+ for i in range(5):
+ mail_channels = self._open_livechat_mail_channel()
+ channel_operators = [channel_info['operator_pid'] for channel_info in mail_channels]
+ channel_operator_ids = [channel_operator[0] for channel_operator in channel_operators]
+ self.assertTrue(all(partner_id in channel_operator_ids for partner_id in self.operators.mapped('partner_id').ids))
+
+ def test_channel_get_livechat_visitor_info(self):
+ belgium = self.env.ref('base.be')
+ public_user = self.env.ref('base.public_user')
+ test_user = self.env['res.users'].create({'name': 'Roger', 'login': 'roger', 'country_id': belgium.id})
+
+ # ensure visitor info are correct with anonymous
+ channel_info = self.livechat_channel.with_user(public_user)._open_livechat_mail_channel(anonymous_name='Visitor 22', country_id=belgium.id)
+ visitor_info = channel_info['livechat_visitor']
+ self.assertFalse(visitor_info['id'])
+ self.assertEqual(visitor_info['name'], "Visitor 22")
+ self.assertEqual(visitor_info['country'], (20, "Belgium"))
+
+ # ensure visitor info are correct with real user
+ channel_info = self.livechat_channel.with_user(test_user)._open_livechat_mail_channel(anonymous_name='whatever', user_id=test_user.id)
+ visitor_info = channel_info['livechat_visitor']
+ self.assertEqual(visitor_info['id'], test_user.partner_id.id)
+ self.assertEqual(visitor_info['name'], "Roger")
+ self.assertEqual(visitor_info['country'], (20, "Belgium"))
+
+ # ensure visitor info are correct when operator is testing himself
+ operator = self.operators[0]
+ channel_info = self.livechat_channel.with_user(operator)._open_livechat_mail_channel(anonymous_name='whatever', previous_operator_id=operator.partner_id.id, user_id=operator.id)
+ self.assertEqual(channel_info['operator_pid'], (operator.partner_id.id, "Michel"))
+ visitor_info = channel_info['livechat_visitor']
+ self.assertEqual(visitor_info['id'], operator.partner_id.id)
+ self.assertEqual(visitor_info['name'], "Michel")
+ self.assertFalse(visitor_info['country'])
+
+ def _open_livechat_mail_channel(self):
+ mail_channels = []
+
+ for i in range(5):
+ mail_channel = self.livechat_channel._open_livechat_mail_channel('Anonymous')
+ mail_channels.append(mail_channel)
+ # send a message to mark this channel as 'active'
+ self.env['mail.channel'].browse(mail_channel['id']).write({
+ 'channel_message_ids': [(0, 0, {'body': 'cc'})]
+ })
+
+ return mail_channels