1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/social_test_full/tests/test_social_crm_convert.py
2024-12-10 09:04:09 +07:00

122 lines
5.6 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.addons.mail.tests.common import mail_new_test_user
from odoo.addons.social.tests import common
from odoo.addons.social.tests.tools import mock_void_external_calls
from odoo.tests.common import Form, users
class TestSocialCrmConvert(common.SocialCase):
@classmethod
def setUpClass(cls):
with mock_void_external_calls():
super(TestSocialCrmConvert, cls).setUpClass()
cls.user_social_crm = mail_new_test_user(
cls.env, login='user_social_crm',
name='Christine SocialUser', email='christine.socialuser@test.example.com',
tz='Europe/Brussels', notification_type='inbox',
company_id=cls.env.ref("base.main_company").id,
groups='base.group_user,social.group_social_user,base.group_partner_manager',
)
cls.utm_campaign_id = cls.env['utm.campaign'].create({
'name': 'Social Campaign'
})
cls.social_stream = cls.env['social.stream'].create({
'name': 'Social Stream',
'stream_type_id': cls.env.ref('social_facebook.stream_type_page_posts').id,
'media_id': cls._get_social_media().id,
'account_id': cls.social_account.id
})
cls.social_post.write({
'utm_campaign_id': cls.utm_campaign_id.id,
})
cls.social_live_post = cls.env['social.live.post'].create({
'post_id': cls.social_post.id,
'account_id': cls.social_account.id,
'facebook_post_id': 'abc123'
})
cls.social_stream_post = cls.env['social.stream.post'].create({
'author_name': 'John Doe',
'stream_id': cls.social_stream.id,
})
@classmethod
def _get_social_media(cls):
return cls.env.ref('social_facebook.social_media_facebook')
@users('user_social_crm')
@mock_void_external_calls()
def test_social_crm_convert_from_post(self):
""" When converting from a stream.post with a matching social.post, the wizard will be
initialized with the data from the stream.post and the resulting lead after conversion will
have as UTMs: the same campaign as the social.post, the medium from the related
social.account and the source as the social.post's source.
Since we found a perfect match on a single partner, the action will be set to 'exist' and
the partner_id will be initialized with this partner. """
self.social_stream_post.write({'facebook_post_id': 'abc123'})
john_doe = self.env['res.partner'].sudo().create({'name': 'John Doe'})
# <form string="Convert Post to Lead">
# ...
# <field name="conversion_source" invisible="1"/>
# <field name="post_content" invisible="1"/>
# ...
# <field name="social_account_id" invisible="1"/>
# <field name="social_stream_post_id" invisible="1"/>
# ...
# </form>
convert_wizard_form = Form(self.env['social.post.to.lead'].with_context(
default_social_account_id=self.social_account,
default_social_stream_post_id=self.social_stream_post,
default_conversion_source='stream_post',
default_post_content='Hello',
))
convert_wizard = convert_wizard_form.save()
self.assertEqual(convert_wizard.post_datetime, self.social_stream_post.published_date)
self.assertEqual(convert_wizard.post_link, self.social_stream_post.post_link)
self.assertEqual(convert_wizard.partner_id, john_doe)
self.assertEqual(convert_wizard.author_name, 'John Doe')
self.assertEqual(convert_wizard.action, 'exist')
convert_wizard.action_convert_to_lead()
created_lead = self.env['crm.lead'].sudo().search([('partner_id', '=', john_doe.id)])
self.assertEqual(len(created_lead), 1)
self.assertEqual(created_lead.campaign_id, self.utm_campaign_id)
self.assertEqual(created_lead.medium_id, self.social_account.utm_medium_id)
self.assertEqual(created_lead.source_id, self.social_post.source_id)
@users('user_social_crm')
@mock_void_external_calls()
def test_social_crm_convert_from_comment(self):
""" When converting from a comment the resulting lead after conversion will have as UTMs:
no campaign, the medium from the related social.account and source set to our master data. """
self.env['res.partner'].sudo().create({'name': 'Doug'})
convert_wizard_form = Form(self.env['social.post.to.lead'].with_context(
default_social_account_id=self.social_account.id,
default_social_stream_post_id=self.social_stream_post.id,
default_conversion_source='comment',
default_post_content='Hello',
default_author_name='Jack',
default_post_link='https://www.facebook.com/1',
))
convert_wizard = convert_wizard_form.save()
self.assertEqual(convert_wizard.action, 'create')
self.assertFalse(convert_wizard.partner_id)
convert_wizard.action_convert_to_lead()
created_lead = self.env['crm.lead'].sudo().search([('partner_id', '=', convert_wizard.partner_id.id)])
self.assertEqual(len(created_lead), 1)
self.assertFalse(created_lead.campaign_id)
self.assertEqual(created_lead.medium_id, self.social_account.utm_medium_id)
self.assertEqual(created_lead.source_id, self.env.ref('social_crm.utm_source_social_post'))