summaryrefslogtreecommitdiff
path: root/addons/crm/tests/test_crm_lead_notification.py
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/tests/test_crm_lead_notification.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/crm/tests/test_crm_lead_notification.py')
-rw-r--r--addons/crm/tests/test_crm_lead_notification.py135
1 files changed, 135 insertions, 0 deletions
diff --git a/addons/crm/tests/test_crm_lead_notification.py b/addons/crm/tests/test_crm_lead_notification.py
new file mode 100644
index 00000000..2e6e646d
--- /dev/null
+++ b/addons/crm/tests/test_crm_lead_notification.py
@@ -0,0 +1,135 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from .common import TestCrmCommon
+
+
+class NewLeadNotification(TestCrmCommon):
+
+ def test_new_lead_notification(self):
+ """ Test newly create leads like from the website. People and channels
+ subscribed to the Sales Team shoud be notified. """
+ # subscribe a partner and a channel to the Sales Team with new lead subtype
+ channel_listen = self.env['mail.channel'].create({'name': 'Listener'})
+ sales_team_1 = self.env['crm.team'].create({
+ 'name': 'Test Sales Team',
+ 'alias_name': 'test_sales_team',
+ })
+
+ subtype = self.env.ref("crm.mt_salesteam_lead")
+ sales_team_1.message_subscribe(partner_ids=[self.user_sales_manager.partner_id.id], channel_ids=[channel_listen.id], subtype_ids=[subtype.id])
+
+ # Imitate what happens in the controller when somebody creates a new
+ # lead from the website form
+ lead = self.env["crm.lead"].with_context(mail_create_nosubscribe=True).sudo().create({
+ "contact_name": "Somebody",
+ "description": "Some question",
+ "email_from": "somemail@example.com",
+ "name": "Some subject",
+ "partner_name": "Some company",
+ "team_id": sales_team_1.id,
+ "phone": "+0000000000"
+ })
+ # partner and channel should be auto subscribed
+ self.assertIn(self.user_sales_manager.partner_id, lead.message_partner_ids)
+ self.assertIn(channel_listen, lead.message_channel_ids)
+
+ msg = lead.message_ids[0]
+ self.assertIn(self.user_sales_manager.partner_id, msg.notified_partner_ids)
+ self.assertIn(channel_listen, msg.channel_ids)
+
+ # The user should have a new unread message
+ lead_user = lead.with_user(self.user_sales_manager)
+ self.assertTrue(lead_user.message_needaction)
+
+ def test_new_lead_from_email_multicompany(self):
+ company0 = self.env.company
+ company1 = self.env['res.company'].create({'name': 'new_company'})
+
+ self.env.user.write({
+ 'company_ids': [(4, company0.id, False), (4, company1.id, False)],
+ })
+
+ crm_team_model = self.env['ir.model'].search([('model', '=', 'crm.team')])
+ crm_lead_model = self.env['ir.model'].search([('model', '=', 'crm.lead')])
+ self.env["ir.config_parameter"].sudo().set_param("mail.catchall.domain", 'aqualung.com')
+
+ crm_team0 = self.env['crm.team'].create({
+ 'name': 'crm team 0',
+ 'company_id': company0.id,
+ })
+ crm_team1 = self.env['crm.team'].create({
+ 'name': 'crm team 1',
+ 'company_id': company1.id,
+ })
+
+ mail_alias0 = self.env['mail.alias'].create({
+ 'alias_name': 'sale_team_0',
+ 'alias_model_id': crm_lead_model.id,
+ 'alias_parent_model_id': crm_team_model.id,
+ 'alias_parent_thread_id': crm_team0.id,
+ 'alias_defaults': "{'type': 'opportunity', 'team_id': %s}" % crm_team0.id,
+ })
+ mail_alias1 = self.env['mail.alias'].create({
+ 'alias_name': 'sale_team_1',
+ 'alias_model_id': crm_lead_model.id,
+ 'alias_parent_model_id': crm_team_model.id,
+ 'alias_parent_thread_id': crm_team1.id,
+ 'alias_defaults': "{'type': 'opportunity', 'team_id': %s}" % crm_team1.id,
+ })
+
+ crm_team0.write({'alias_id': mail_alias0.id})
+ crm_team1.write({'alias_id': mail_alias1.id})
+
+ new_message0 = """MIME-Version: 1.0
+Date: Thu, 27 Dec 2018 16:27:45 +0100
+Message-ID: blablabla0
+Subject: sale team 0 in company 0
+From: A client <client_a@someprovider.com>
+To: sale_team_0@aqualung.com
+Content-Type: multipart/alternative; boundary="000000000000a47519057e029630"
+
+--000000000000a47519057e029630
+Content-Type: text/plain; charset="UTF-8"
+
+
+--000000000000a47519057e029630
+Content-Type: text/html; charset="UTF-8"
+Content-Transfer-Encoding: quoted-printable
+
+<div>A good message</div>
+
+--000000000000a47519057e029630--
+"""
+
+ new_message1 = """MIME-Version: 1.0
+Date: Thu, 27 Dec 2018 16:27:45 +0100
+Message-ID: blablabla1
+Subject: sale team 1 in company 1
+From: B client <client_b@someprovider.com>
+To: sale_team_1@aqualung.com
+Content-Type: multipart/alternative; boundary="000000000000a47519057e029630"
+
+--000000000000a47519057e029630
+Content-Type: text/plain; charset="UTF-8"
+
+
+--000000000000a47519057e029630
+Content-Type: text/html; charset="UTF-8"
+Content-Transfer-Encoding: quoted-printable
+
+<div>A good message bis</div>
+
+--000000000000a47519057e029630--
+"""
+ crm_lead0_id = self.env['mail.thread'].message_process('crm.lead', new_message0)
+ crm_lead1_id = self.env['mail.thread'].message_process('crm.lead', new_message1)
+
+ crm_lead0 = self.env['crm.lead'].browse(crm_lead0_id)
+ crm_lead1 = self.env['crm.lead'].browse(crm_lead1_id)
+
+ self.assertEqual(crm_lead0.team_id, crm_team0)
+ self.assertEqual(crm_lead1.team_id, crm_team1)
+
+ self.assertEqual(crm_lead0.company_id, company0)
+ self.assertEqual(crm_lead1.company_id, company1)