95 lines
3.9 KiB
Python
95 lines
3.9 KiB
Python
# -*- 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='email',
|
|
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='email',
|
|
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, '/lead TestLead command')
|
|
|
|
self.assertEqual(
|
|
channel.channel_partner_ids,
|
|
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, '/lead TestLead command')
|
|
|
|
self.assertEqual(
|
|
channel.channel_member_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 they were 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, '/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, '/lead TestLead command')
|
|
|
|
self.assertEqual(
|
|
channel.channel_partner_ids,
|
|
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, '/lead TestLead command')
|
|
|
|
self.assertEqual(
|
|
channel.channel_partner_ids,
|
|
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)
|