summaryrefslogtreecommitdiff
path: root/addons/crm_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/crm_livechat/tests
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/crm_livechat/tests')
-rw-r--r--addons/crm_livechat/tests/__init__.py4
-rw-r--r--addons/crm_livechat/tests/test_crm_lead.py94
2 files changed, 98 insertions, 0 deletions
diff --git a/addons/crm_livechat/tests/__init__.py b/addons/crm_livechat/tests/__init__.py
new file mode 100644
index 00000000..3721104a
--- /dev/null
+++ b/addons/crm_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_crm_lead
diff --git a/addons/crm_livechat/tests/test_crm_lead.py b/addons/crm_livechat/tests/test_crm_lead.py
new file mode 100644
index 00000000..0c012b20
--- /dev/null
+++ b/addons/crm_livechat/tests/test_crm_lead.py
@@ -0,0 +1,94 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo.addons.crm.tests.common import TestCrmCommon
+from odoo.addons.mail.tests.common import mail_new_test_user
+from odoo.tests.common import users
+
+
+class TestLivechatLead(TestCrmCommon):
+
+ @classmethod
+ def setUpClass(cls):
+ super(TestLivechatLead, cls).setUpClass()
+
+ cls.user_anonymous = mail_new_test_user(
+ cls.env, login='user_anonymous',
+ name='Anonymous Website', email=False,
+ company_id=cls.company_main.id,
+ notification_type='inbox',
+ groups='base.group_public',
+ )
+ cls.user_portal = mail_new_test_user(
+ cls.env, login='user_portal',
+ name='Paulette Portal', email='user_portal@test.example.com',
+ company_id=cls.company_main.id,
+ notification_type='inbox',
+ groups='base.group_portal',
+ )
+
+ @users('user_sales_leads')
+ def test_crm_lead_creation_guest(self):
+ """ Test customer set on lead: not if public, guest if not public """
+ # public: should not be set as customer
+ channel = self.env['mail.channel'].create({
+ 'name': 'Chat with Visitor',
+ 'channel_partner_ids': [(4, self.user_anonymous.partner_id.id)]
+ })
+ lead = channel._convert_visitor_to_lead(self.env.user.partner_id, channel.channel_last_seen_partner_ids, '/lead TestLead command')
+
+ self.assertEqual(
+ channel.channel_last_seen_partner_ids.partner_id,
+ self.user_sales_leads.partner_id | self.user_anonymous.partner_id
+ )
+ self.assertEqual(lead.name, 'TestLead command')
+ self.assertEqual(lead.partner_id, self.env['res.partner'])
+
+ # public user: should not be set as customer
+ # 'base.public_user' is archived by default
+ self.assertFalse(self.env.ref('base.public_user').active)
+
+ channel = self.env['mail.channel'].create({
+ 'name': 'Chat with Visitor',
+ 'channel_partner_ids': [(4, self.env.ref('base.public_partner').id)]
+ })
+ lead = channel._convert_visitor_to_lead(self.env.user.partner_id, channel.channel_last_seen_partner_ids, '/lead TestLead command')
+
+ self.assertEqual(
+ channel.channel_last_seen_partner_ids.partner_id,
+ self.user_sales_leads.partner_id | self.env.ref('base.public_partner')
+ )
+ self.assertEqual(lead.name, 'TestLead command')
+ self.assertEqual(lead.partner_id, self.env['res.partner'])
+
+ # public + someone else: no customer (as he was anonymous)
+ channel.write({
+ 'channel_partner_ids': [(4, self.user_sales_manager.partner_id.id)]
+ })
+ lead = channel._convert_visitor_to_lead(self.env.user.partner_id, channel.channel_last_seen_partner_ids, '/lead TestLead command')
+ self.assertEqual(lead.partner_id, self.env['res.partner'])
+
+ # portal: should be set as customer
+ channel = self.env['mail.channel'].create({
+ 'name': 'Chat with Visitor',
+ 'channel_partner_ids': [(4, self.user_portal.partner_id.id)]
+ })
+ lead = channel._convert_visitor_to_lead(self.env.user.partner_id, channel.channel_last_seen_partner_ids, '/lead TestLead command')
+
+ self.assertEqual(
+ channel.channel_last_seen_partner_ids.partner_id,
+ self.user_sales_leads.partner_id | self.user_portal.partner_id
+ )
+ self.assertEqual(lead.partner_id, self.user_portal.partner_id)
+
+ # another operator invited: internal user should not be customer if portal is present
+ channel.write({
+ 'channel_partner_ids': [(4, self.user_sales_manager.partner_id.id)]
+ })
+ lead = channel._convert_visitor_to_lead(self.env.user.partner_id, channel.channel_last_seen_partner_ids, '/lead TestLead command')
+
+ self.assertEqual(
+ channel.channel_last_seen_partner_ids.partner_id,
+ self.user_sales_leads.partner_id | self.user_portal.partner_id | self.user_sales_manager.partner_id
+ )
+ self.assertEqual(lead.partner_id, self.user_portal.partner_id)