summaryrefslogtreecommitdiff
path: root/addons/test_mail/tests/test_message_track.py
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2020-04-21 14:07:55 +0000
committerThibault Delavallée <tde@odoo.com>2020-04-22 08:00:29 +0000
commit6e347b196d4bf40929d88ab2c835ba3fbc4dac7d (patch)
tree6da6e12e60a81d792c9fb16933be9cb0f58dcd1a /addons/test_mail/tests/test_message_track.py
parent1b4767ee798562911922a7e03b04b4e6485350be (diff)
[MOV] (test_)mail(_full): redispatch some tests and split test mail models file
PURPOSE Have a cleaner test_mail addons SPECIFICATIONS Keep only mail-related tests, move odoobot in test mail full, send "update notification" tests in mail (specific to mail). Merge some test files to lessen number of files, perform light file renaming. Split test mail models file to prepare some cleaning in those models and tests. LINKS Prepares Task ID 2238597 (clean notification models) Prepares Task ID 2083854 (improve mass mailing technical flows) PR #49891
Diffstat (limited to 'addons/test_mail/tests/test_message_track.py')
-rw-r--r--addons/test_mail/tests/test_message_track.py115
1 files changed, 60 insertions, 55 deletions
diff --git a/addons/test_mail/tests/test_message_track.py b/addons/test_mail/tests/test_message_track.py
index 20ee3d74c4b..45ae711d32b 100644
--- a/addons/test_mail/tests/test_message_track.py
+++ b/addons/test_mail/tests/test_message_track.py
@@ -4,8 +4,10 @@
from unittest.mock import patch
from odoo.addons.test_mail.tests.common import TestMailCommon
+from odoo.tests.common import tagged
+@tagged('mail_track')
class TestTracking(TestMailCommon):
def setUp(self):
@@ -127,61 +129,6 @@ class TestTracking(TestMailCommon):
# one email send due to template
self.assertSentEmail(self.record.env.user.partner_id, [self.partner_admin], body='<p>Hello Test</p>')
- def test_message_tracking_sequence(self):
- """ Update some tracked fields and check that the mail.tracking.value are ordered according to their tracking_sequence"""
- self.record.write({
- 'name': 'Zboub',
- 'customer_id': self.user_admin.partner_id.id,
- 'user_id': self.user_admin.id,
- 'umbrella_id': self.env['mail.test'].with_context(mail_create_nosubscribe=True).create({'name': 'Umbrella'}).id
- })
- self.flush_tracking()
- self.assertEqual(len(self.record.message_ids), 1, 'should have 1 tracking message')
-
- tracking_values = self.env['mail.tracking.value'].search([('mail_message_id', '=', self.record.message_ids.id)])
- self.assertEqual(tracking_values[0].tracking_sequence, 1)
- self.assertEqual(tracking_values[1].tracking_sequence, 2)
- self.assertEqual(tracking_values[2].tracking_sequence, 100)
-
- def test_track_groups(self):
- # patch the group attribute
- field = self.record._fields['email_from']
- self.addCleanup(setattr, field, 'groups', field.groups)
- field.groups = 'base.group_erp_manager'
-
- self.record.sudo().write({'email_from': 'X'})
- self.flush_tracking()
-
- msg_emp = self.record.message_ids.message_format()
- msg_sudo = self.record.sudo().message_ids.message_format()
- self.assertFalse(msg_emp[0].get('tracking_value_ids'), "should not have protected tracking values")
- self.assertTrue(msg_sudo[0].get('tracking_value_ids'), "should have protected tracking values")
-
- def test_notify_track_groups(self):
- # patch the group attribute
- field = self.record._fields['email_from']
- self.addCleanup(setattr, field, 'groups', field.groups)
- field.groups = 'base.group_erp_manager'
-
- self.record.sudo().write({'email_from': 'X'})
- self.flush_tracking()
-
- msg_emp = self.record._notify_prepare_template_context(self.record.message_ids, {})
- msg_sudo = self.record.sudo()._notify_prepare_template_context(self.record.message_ids, {})
- self.assertFalse(msg_emp.get('tracking_values'), "should not have protected tracking values")
- self.assertTrue(msg_sudo.get('tracking_values'), "should have protected tracking values")
-
- def test_unlinked_field(self):
- record_sudo = self.record.sudo()
- record_sudo.write({'email_from': 'X'}) # create a tracking value
- self.flush_tracking()
- self.assertEqual(len(record_sudo.message_ids.tracking_value_ids), 1)
- ir_model_field = self.env['ir.model.fields'].search([
- ('model', '=', 'mail.test.full'),
- ('name', '=', 'email_from')])
- ir_model_field.with_context(_force_unlink=True).unlink()
- self.assertEqual(len(record_sudo.message_ids.tracking_value_ids), 0)
-
def test_create_partner_from_tracking_multicompany(self):
company1 = self.env['res.company'].create({'name': 'company1'})
self.env.user.write({'company_ids': [(4, company1.id, False)]})
@@ -334,3 +281,61 @@ class TestTracking(TestMailCommon):
('partner_name', 'char', 'Fool', 'Bar'),
('partner_email', 'char', 'foo@example.com', 'bar@example.com'),
])
+
+
+@tagged('mail_track')
+class TestTrackingInternals(TestMailCommon):
+
+ def setUp(self):
+ super(TestTrackingInternals, self).setUp()
+
+ record = self.env['mail.test.full'].with_user(self.user_employee).with_context(self._test_context).create({
+ 'name': 'Test',
+ })
+ self.flush_tracking()
+ self.record = record.with_context(mail_notrack=False)
+
+ def test_track_groups(self):
+ field = self.record._fields['email_from']
+ self.addCleanup(setattr, field, 'groups', field.groups)
+ field.groups = 'base.group_erp_manager'
+
+ self.record.sudo().write({'email_from': 'X'})
+ self.flush_tracking()
+
+ msg_emp = self.record.message_ids.message_format()
+ msg_sudo = self.record.sudo().message_ids.message_format()
+ self.assertFalse(msg_emp[0].get('tracking_value_ids'), "should not have protected tracking values")
+ self.assertTrue(msg_sudo[0].get('tracking_value_ids'), "should have protected tracking values")
+
+ msg_emp = self.record._notify_prepare_template_context(self.record.message_ids, {})
+ msg_sudo = self.record.sudo()._notify_prepare_template_context(self.record.message_ids, {})
+ self.assertFalse(msg_emp.get('tracking_values'), "should not have protected tracking values")
+ self.assertTrue(msg_sudo.get('tracking_values'), "should have protected tracking values")
+
+ def test_track_sequence(self):
+ """ Update some tracked fields and check that the mail.tracking.value are ordered according to their tracking_sequence"""
+ self.record.write({
+ 'name': 'Zboub',
+ 'customer_id': self.user_admin.partner_id.id,
+ 'user_id': self.user_admin.id,
+ 'umbrella_id': self.env['mail.test'].with_context(mail_create_nosubscribe=True).create({'name': 'Umbrella'}).id
+ })
+ self.flush_tracking()
+ self.assertEqual(len(self.record.message_ids), 1, 'should have 1 tracking message')
+
+ tracking_values = self.env['mail.tracking.value'].search([('mail_message_id', '=', self.record.message_ids.id)])
+ self.assertEqual(tracking_values[0].tracking_sequence, 1)
+ self.assertEqual(tracking_values[1].tracking_sequence, 2)
+ self.assertEqual(tracking_values[2].tracking_sequence, 100)
+
+ def test_unlinked_field(self):
+ record_sudo = self.record.sudo()
+ record_sudo.write({'email_from': 'new_value'}) # create a tracking value
+ self.flush_tracking()
+ self.assertEqual(len(record_sudo.message_ids.tracking_value_ids), 1)
+ ir_model_field = self.env['ir.model.fields'].search([
+ ('model', '=', 'mail.test.full'),
+ ('name', '=', 'email_from')])
+ ir_model_field.with_context(_force_unlink=True).unlink()
+ self.assertEqual(len(record_sudo.message_ids.tracking_value_ids), 0)