diff options
| author | Thibault Delavallée <tde@odoo.com> | 2020-04-22 08:33:19 +0000 |
|---|---|---|
| committer | Thibault Delavallée <tde@odoo.com> | 2020-04-22 08:40:03 +0000 |
| commit | 7c3a0daaa1a2ed9c23267874842ca431819e0a10 (patch) | |
| tree | b4c1831c067f799011687ad8fa632c28d1131108 /addons/test_mail | |
| parent | ba068ee7283a36cff4b20d6c157e3b0454257f82 (diff) | |
[REF] test_mail: sun is shining, no more umbrellas
PURPOSE
Have a cleaner test_mail addons
SPECIFICATIONS
Umbrella -> Container, easier to understand that we target a ticket / project
like model using mail.test.ticket and mail.test.container .
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')
| -rw-r--r-- | addons/test_mail/data/subtype_data.xml | 2 | ||||
| -rw-r--r-- | addons/test_mail/models/test_mail_models.py | 10 | ||||
| -rw-r--r-- | addons/test_mail/tests/test_mail_followers.py | 28 | ||||
| -rw-r--r-- | addons/test_mail/tests/test_message_track.py | 16 | ||||
| -rw-r--r-- | addons/test_mail/tests/test_performance.py | 52 |
5 files changed, 54 insertions, 54 deletions
diff --git a/addons/test_mail/data/subtype_data.xml b/addons/test_mail/data/subtype_data.xml index 2033fb2d127..9a91ee77610 100644 --- a/addons/test_mail/data/subtype_data.xml +++ b/addons/test_mail/data/subtype_data.xml @@ -28,7 +28,7 @@ <field name="name">Container Child Full Subtype</field> <field name="res_model">mail.test.container</field> <field name="parent_id" ref="test_mail.st_mail_test_ticket_container_upd"/> - <field name="relation_field">umbrella_id</field> + <field name="relation_field">container_id</field> <field name="default" eval="False"/> <field name="internal" eval="False"/> </record> diff --git a/addons/test_mail/models/test_mail_models.py b/addons/test_mail/models/test_mail_models.py index 9a78f76a347..47fdf6ae1ed 100644 --- a/addons/test_mail/models/test_mail_models.py +++ b/addons/test_mail/models/test_mail_models.py @@ -38,7 +38,7 @@ class MailTestStandard(models.Model): name = fields.Char() email_from = fields.Char() user_id = fields.Many2one('res.users', 'Responsible', tracking=True) - umbrella_id = fields.Many2one('mail.test.container', tracking=True) + container_id = fields.Many2one('mail.test.container', tracking=True) company_id = fields.Many2one('res.company') @@ -77,7 +77,7 @@ class MailTestTicket(models.Model): mail_template = fields.Many2one('mail.template', 'Template') customer_id = fields.Many2one('res.partner', 'Customer', tracking=2) user_id = fields.Many2one('res.users', 'Responsible', tracking=1) - umbrella_id = fields.Many2one('mail.test.container', tracking=True) + container_id = fields.Many2one('mail.test.container', tracking=True) def _track_template(self, changes): res = super(MailTestTicket, self)._track_template(changes) @@ -89,19 +89,19 @@ class MailTestTicket(models.Model): return res def _creation_subtype(self): - if self.umbrella_id: + if self.container_id: return self.env.ref('test_mail.st_mail_test_ticket_container_upd') return super(MailTestTicket, self)._creation_subtype() def _track_subtype(self, init_values): self.ensure_one() - if 'umbrella_id' in init_values and self.umbrella_id: + if 'container_id' in init_values and self.container_id: return self.env.ref('test_mail.st_mail_test_ticket_container_upd') return super(MailTestTicket, self)._track_subtype(init_values) class MailTestContainer(models.Model): - """ This model can be used in tests when umbrella records like projects + """ This model can be used in tests when container records like projects or teams are required. """ _description = 'Project-like model with alias' _name = 'mail.test.container' diff --git a/addons/test_mail/tests/test_mail_followers.py b/addons/test_mail/tests/test_mail_followers.py index 6d1a3a8ed75..592972921a8 100644 --- a/addons/test_mail/tests/test_mail_followers.py +++ b/addons/test_mail/tests/test_mail_followers.py @@ -144,16 +144,16 @@ class AdvancedFollowersTest(TestMailCommon): Subtype.search([('res_model', 'in', ['mail.test.container', 'mail.test.track'])]).unlink() cls.sub_nodef = Subtype.create({'name': 'Sub NoDefault', 'default': False, 'res_model': 'mail.test.container'}) - cls.sub_umb1 = Subtype.create({'name': 'Sub Umbrella1', 'default': False, 'res_model': 'mail.test.track'}) - cls.sub_umb2 = Subtype.create({'name': 'Sub Umbrella2', 'default': False, 'res_model': 'mail.test.track'}) - cls.umb_def = Subtype.create({'name': 'Umbrella Default', 'default': True, 'res_model': 'mail.test.container'}) - # create subtypes for auto subscription from umbrella to sub records + cls.sub_umb1 = Subtype.create({'name': 'Sub Container1', 'default': False, 'res_model': 'mail.test.track'}) + cls.sub_umb2 = Subtype.create({'name': 'Sub Container2', 'default': False, 'res_model': 'mail.test.track'}) + cls.umb_def = Subtype.create({'name': 'Container Default', 'default': True, 'res_model': 'mail.test.container'}) + # create subtypes for auto subscription from container to sub records cls.umb_sub_def = Subtype.create({ - 'name': 'Umbrella Sub1', 'default': True, 'res_model': 'mail.test.container', - 'parent_id': cls.sub_umb1.id, 'relation_field': 'umbrella_id'}) + 'name': 'Container Sub1', 'default': True, 'res_model': 'mail.test.container', + 'parent_id': cls.sub_umb1.id, 'relation_field': 'container_id'}) cls.umb_sub_nodef = Subtype.create({ - 'name': 'Umbrella Sub2', 'default': False, 'res_model': 'mail.test.container', - 'parent_id': cls.sub_umb2.id, 'relation_field': 'umbrella_id'}) + 'name': 'Container Sub2', 'default': False, 'res_model': 'mail.test.container', + 'parent_id': cls.sub_umb2.id, 'relation_field': 'container_id'}) def test_auto_subscribe_create(self): """ Creator of records are automatically added as followers """ @@ -183,27 +183,27 @@ class AdvancedFollowersTest(TestMailCommon): self.assertEqual(sub.message_partner_ids, (self.user_employee.partner_id | self.user_admin.partner_id)) def test_auto_subscribe_defaults(self): - """ Test auto subscription based on an umbrella record. This mimics + """ Test auto subscription based on an container record. This mimics the behavior of addons like project and task where subscribing to some project's subtypes automatically subscribe the follower to its tasks. Functional rules applied here - * subscribing to an umbrella subtype with parent_id / relation_field set + * subscribing to an container subtype with parent_id / relation_field set automatically create subscription with matching subtypes * subscribing to a sub-record as creator applies default subtype values * portal user should not have access to internal subtypes """ - umbrella = self.env['mail.test.container'].with_context(self._test_context).create({ + container = self.env['mail.test.container'].with_context(self._test_context).create({ 'name': 'Project-Like', }) - umbrella.message_subscribe(partner_ids=[self.partner_portal.id]) - self.assertEqual(umbrella.message_partner_ids, self.partner_portal) + container.message_subscribe(partner_ids=[self.partner_portal.id]) + self.assertEqual(container.message_partner_ids, self.partner_portal) sub1 = self.env['mail.test.track'].with_user(self.user_employee).create({ 'name': 'Task-Like Test', - 'umbrella_id': umbrella.id, + 'container_id': container.id, }) all_defaults = self.env['mail.message.subtype'].search([('default', '=', True), '|', ('res_model', '=', 'mail.test.track'), ('res_model', '=', False)]) diff --git a/addons/test_mail/tests/test_message_track.py b/addons/test_mail/tests/test_message_track.py index e095f7e6003..3050951f45f 100644 --- a/addons/test_mail/tests/test_message_track.py +++ b/addons/test_mail/tests/test_message_track.py @@ -60,25 +60,25 @@ class TestTracking(TestMailCommon): subtype_ids=[self.env.ref('test_mail.st_mail_test_ticket_container_upd').id] ) - umbrella = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({'name': 'Umbrella'}) + container = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({'name': 'Container'}) self.record.write({ 'name': 'Test2', 'email_from': 'noone@example.com', - 'umbrella_id': umbrella.id, + 'container_id': container.id, }) self.flush_tracking() # one new message containing tracking; subtype linked to tracking self.assertEqual(len(self.record.message_ids), 1) self.assertEqual(self.record.message_ids.subtype_id, self.env.ref('test_mail.st_mail_test_ticket_container_upd')) - # no specific recipients except those following umbrella + # no specific recipients except those following container self.assertEqual(self.record.message_ids.partner_ids, self.env['res.partner']) self.assertEqual(self.record.message_ids.notified_partner_ids, self.user_admin.partner_id) # verify tracked value self.assertTracking( self.record.message_ids, - [('umbrella_id', 'many2one', False, umbrella) # onchange tracked field + [('container_id', 'many2one', False, container) # onchange tracked field ]) def test_message_track_template(self): @@ -215,11 +215,11 @@ class TestTracking(TestMailCommon): def test_message_track_multiple(self): """ check that multiple updates generate a single tracking message """ - umbrella = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({'name': 'Umbrella'}) + container = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({'name': 'Container'}) self.record.name = 'Zboub' self.record.customer_id = self.user_admin.partner_id self.record.user_id = self.user_admin - self.record.umbrella_id = umbrella + self.record.container_id = container self.flush_tracking() # should have a single message with all tracked fields @@ -227,7 +227,7 @@ class TestTracking(TestMailCommon): self.assertTracking(self.record.message_ids[0], [ ('customer_id', 'many2one', False, self.user_admin.partner_id), ('user_id', 'many2one', False, self.user_admin), - ('umbrella_id', 'many2one', False, umbrella), + ('container_id', 'many2one', False, container), ]) def test_tracked_compute(self): @@ -319,7 +319,7 @@ class TestTrackingInternals(TestMailCommon): 'name': 'Zboub', 'customer_id': self.user_admin.partner_id.id, 'user_id': self.user_admin.id, - 'umbrella_id': self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({'name': 'Umbrella'}).id + 'container_id': self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({'name': 'Container'}).id }) self.flush_tracking() self.assertEqual(len(self.record.message_ids), 1, 'should have 1 tracking message') diff --git a/addons/test_mail/tests/test_performance.py b/addons/test_mail/tests/test_performance.py index c6c4d8b0527..911a09347bf 100644 --- a/addons/test_mail/tests/test_performance.py +++ b/addons/test_mail/tests/test_performance.py @@ -447,8 +447,8 @@ class TestMailComplexPerformance(BaseMailPerformance): 'name': 'Test Customer', 'email': 'test@example.com' }) - self.umbrella = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({ - 'name': 'Test Umbrella', + self.container = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({ + 'name': 'Test Container', 'customer_id': self.customer.id, 'alias_name': 'test-alias', }) @@ -456,12 +456,12 @@ class TestMailComplexPerformance(BaseMailPerformance): self.partners = self.env['res.partner'] for x in range(0, 10): self.partners |= Partners.create({'name': 'Test %s' % x, 'email': 'test%s@example.com' % x}) - self.umbrella.message_subscribe(self.partners.ids, subtype_ids=[ + self.container.message_subscribe(self.partners.ids, subtype_ids=[ self.env.ref('mail.mt_comment').id, self.env.ref('test_mail.st_mail_test_container_child_full').id] ) # `test_complex_mail_mail_send` - self.umbrella.flush() + self.container.flush() @mute_logger('odoo.tests', 'odoo.addons.mail.models.mail_mail', 'odoo.models.unlink') @users('__system__', 'emp') @@ -473,7 +473,7 @@ class TestMailComplexPerformance(BaseMailPerformance): 'author_id': self.env.user.partner_id.id, 'email_from': self.env.user.partner_id.email, 'model': 'mail.test.container', - 'res_id': self.umbrella.id, + 'res_id': self.container.id, }) mail = self.env['mail.mail'].sudo().create({ 'body_html': '<p>Test</p>', @@ -485,14 +485,14 @@ class TestMailComplexPerformance(BaseMailPerformance): self.env['mail.mail'].sudo().browse(mail_ids).send() self.assertEqual(mail.body_html, '<p>Test</p>') - self.assertEqual(mail.reply_to, formataddr(('%s %s' % (self.env.company.name, self.umbrella.name), 'test-alias@example.com'))) + self.assertEqual(mail.reply_to, formataddr(('%s %s' % (self.env.company.name, self.container.name), 'test-alias@example.com'))) @mute_logger('odoo.tests', 'odoo.addons.mail.models.mail_mail', 'odoo.models.unlink') @users('__system__', 'emp') @warmup def test_complex_message_post(self): - self.umbrella.message_subscribe(self.user_portal.partner_id.ids) - record = self.umbrella.with_user(self.env.user) + self.container.message_subscribe(self.user_portal.partner_id.ids) + record = self.container.with_user(self.env.user) with self.assertQueryCount(__system__=68, emp=69): record.message_post( @@ -507,8 +507,8 @@ class TestMailComplexPerformance(BaseMailPerformance): @users('__system__', 'emp') @warmup def test_complex_message_post_template(self): - self.umbrella.message_subscribe(self.user_portal.partner_id.ids) - record = self.umbrella.with_user(self.env.user) + self.container.message_subscribe(self.user_portal.partner_id.ids) + record = self.container.with_user(self.env.user) template_id = self.env.ref('test_mail.mail_test_container_tpl').id with self.assertQueryCount(__system__=78, emp=80): @@ -527,7 +527,7 @@ class TestMailComplexPerformance(BaseMailPerformance): subtype_ids = subtypes.ids rec = self.env['mail.test.ticket'].create({ 'name': 'Test', - 'umbrella_id': False, + 'container_id': False, 'customer_id': False, 'user_id': self.user_portal.id, }) @@ -576,7 +576,7 @@ class TestMailComplexPerformance(BaseMailPerformance): """ Assignation performance test on already-created record """ rec = self.env['mail.test.ticket'].create({ 'name': 'Test', - 'umbrella_id': self.umbrella.id, + 'container_id': self.container.id, 'customer_id': self.customer.id, 'user_id': self.env.uid, }) @@ -598,14 +598,14 @@ class TestMailComplexPerformance(BaseMailPerformance): @warmup def test_complex_tracking_subscription_create(self): """ Creation performance test involving auto subscription, assignation, tracking with subtype and template send. """ - umbrella_id = self.umbrella.id + container_id = self.container.id customer_id = self.customer.id user_id = self.user_portal.id with self.assertQueryCount(__system__=116, emp=117): rec = self.env['mail.test.ticket'].create({ 'name': 'Test', - 'umbrella_id': umbrella_id, + 'container_id': container_id, 'customer_id': customer_id, 'user_id': user_id, }) @@ -624,7 +624,7 @@ class TestMailComplexPerformance(BaseMailPerformance): """ Write performance test involving auto subscription, tracking with subtype """ rec = self.env['mail.test.ticket'].create({ 'name': 'Test', - 'umbrella_id': False, + 'container_id': False, 'customer_id': False, 'user_id': self.user_portal.id, }) @@ -634,7 +634,7 @@ class TestMailComplexPerformance(BaseMailPerformance): with self.assertQueryCount(__system__=83, emp=83): rec.write({ 'name': 'Test2', - 'umbrella_id': self.umbrella.id, + 'container_id': self.container.id, }) self.assertEqual(rec1.message_partner_ids, self.partners | self.env.user.partner_id | self.user_portal.partner_id) @@ -651,17 +651,17 @@ class TestMailComplexPerformance(BaseMailPerformance): @warmup def test_complex_tracking_subscription_write(self): """ Write performance test involving auto subscription, tracking with subtype and template send """ - umbrella_id = self.umbrella.id + container_id = self.container.id customer_id = self.customer.id - umbrella2 = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({ - 'name': 'Test Umbrella 2', + container2 = self.env['mail.test.container'].with_context(mail_create_nosubscribe=True).create({ + 'name': 'Test Container 2', 'customer_id': False, 'alias_name': False, }) rec = self.env['mail.test.ticket'].create({ 'name': 'Test', - 'umbrella_id': umbrella2.id, + 'container_id': container2.id, 'customer_id': False, 'user_id': self.user_portal.id, }) @@ -671,7 +671,7 @@ class TestMailComplexPerformance(BaseMailPerformance): with self.assertQueryCount(__system__=91, emp=91): rec.write({ 'name': 'Test2', - 'umbrella_id': umbrella_id, + 'container_id': container_id, 'customer_id': customer_id, }) @@ -693,7 +693,7 @@ class TestMailComplexPerformance(BaseMailPerformance): self.assertTrue(self.env.registry.ready, "We need to simulate that registery is ready") rec = self.env['mail.test.ticket'].create({ 'name': 'Test', - 'umbrella_id': self.umbrella.id, + 'container_id': self.container.id, 'customer_id': False, 'user_id': self.user_portal.id, 'mail_template': self.env.ref('test_mail.mail_test_ticket_tracking_tpl').id, @@ -729,8 +729,8 @@ class TestMailComplexPerformance(BaseMailPerformance): Those messages might not make sense functionally but they are crafted to cover as much of the code as possible in regard to number of queries. """ - name_field = self.env['ir.model.fields']._get(self.umbrella._name, 'name') - customer_id_field = self.env['ir.model.fields']._get(self.umbrella._name, 'customer_id') + name_field = self.env['ir.model.fields']._get(self.container._name, 'name') + customer_id_field = self.env['ir.model.fields']._get(self.container._name, 'customer_id') messages = self.env['mail.message'].sudo().create([{ 'subject': 'Test 0', @@ -738,7 +738,7 @@ class TestMailComplexPerformance(BaseMailPerformance): 'author_id': self.partners[0].id, 'email_from': self.partners[0].email, 'model': 'mail.test.container', - 'res_id': self.umbrella.id, + 'res_id': self.container.id, 'subtype_id': self.env['ir.model.data'].xmlid_to_res_id('mail.mt_comment'), 'attachment_ids': [ (0, 0, { @@ -782,7 +782,7 @@ class TestMailComplexPerformance(BaseMailPerformance): 'author_id': self.partners[1].id, 'email_from': self.partners[1].email, 'model': 'mail.test.container', - 'res_id': self.umbrella.id, + 'res_id': self.container.id, 'subtype_id': self.env['ir.model.data'].xmlid_to_res_id('mail.mt_note'), 'attachment_ids': [ (0, 0, { |
