From cde06d5f5c7cbbe11366f6bb39f825172d8fe097 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Tue, 5 Dec 2017 15:02:14 +0100 Subject: [PATCH] [IMP] test_mail: move some data into demo and update tests accordingly Creating data directly in tests was done when tests were located in mail module to avoid creating real data or demo. Now that mail tests have their own module we can create demo data and use them in tests. It is simpler to have demo data for things like subtype and email templates to ease understanding and reuse. --- addons/test_mail/__manifest__.py | 2 ++ addons/test_mail/data/subtype_demo.xml | 28 +++++++++++++++++++ addons/test_mail/data/template_demo.xml | 24 ++++++++++++++++ addons/test_mail/models/test_mail_models.py | 5 ++-- addons/test_mail/tests/test_mail_followers.py | 6 +++- addons/test_mail/tests/test_message_track.py | 25 +++-------------- 6 files changed, 66 insertions(+), 24 deletions(-) create mode 100644 addons/test_mail/data/subtype_demo.xml create mode 100644 addons/test_mail/data/template_demo.xml diff --git a/addons/test_mail/__manifest__.py b/addons/test_mail/__manifest__.py index 52282f6746d..51d9cc7fe42 100644 --- a/addons/test_mail/__manifest__.py +++ b/addons/test_mail/__manifest__.py @@ -15,6 +15,8 @@ tests independently to functional aspects of other models. """, ], 'demo': [ 'data/demo.xml', + 'data/subtype_demo.xml', + 'data/template_demo.xml', ], 'installable': True, 'application': False, diff --git a/addons/test_mail/data/subtype_demo.xml b/addons/test_mail/data/subtype_demo.xml new file mode 100644 index 00000000000..20a486aace8 --- /dev/null +++ b/addons/test_mail/data/subtype_demo.xml @@ -0,0 +1,28 @@ + + + + + Umbrella Changed Subtype + Umbrella Changed + mail.test.full + + + + + + Umbrella Default Subtype + mail.test + + + + + + Umbrella Child Full Subtype + mail.test + + umbrella_id + + + + + diff --git a/addons/test_mail/data/template_demo.xml b/addons/test_mail/data/template_demo.xml new file mode 100644 index 00000000000..35bdbedd7a2 --- /dev/null +++ b/addons/test_mail/data/template_demo.xml @@ -0,0 +1,24 @@ + + + + Mail Test Full: Tracking Template + Test Template + ${object.customer_id.id | safe} +

Hello ${object.name}

+ + +
+ + + Mail Test: Template + Post on ${object.name} + ${object.customer_id.id} +

Adding stuff on ${object.name}

+ + +
+ + +
diff --git a/addons/test_mail/models/test_mail_models.py b/addons/test_mail/models/test_mail_models.py index ec3e712fe38..4c1fd408ddf 100644 --- a/addons/test_mail/models/test_mail_models.py +++ b/addons/test_mail/models/test_mail_models.py @@ -62,13 +62,13 @@ class MailTestFull(models.Model): if 'customer_id' in changes and record.mail_template: res['customer_id'] = (record.mail_template, {'composition_mode': 'mass_mail'}) elif 'datetime' in changes: - res['datetime'] = ('mail.track_template', {'composition_mode': 'mass_mail'}) + res['datetime'] = ('test_mail.mail_test_full_tracking_view', {'composition_mode': 'mass_mail'}) return res def _track_subtype(self, init_values): self.ensure_one() if 'umbrella_id' in init_values and self.umbrella_id: - return 'mail.track_subtype_umbrella' + return 'test_mail.st_mail_test_full_umbrella_upd' return super(MailTestFull, self)._track_subtype(init_values) @@ -82,6 +82,7 @@ class MailTestAlias(models.Model): name = fields.Char() description = fields.Text() + customer_id = fields.Many2one('res.partner', 'Customer') alias_id = fields.Many2one( 'mail.alias', 'Alias', delegate=True) diff --git a/addons/test_mail/tests/test_mail_followers.py b/addons/test_mail/tests/test_mail_followers.py index 9e3c55ee0a9..a59ef9cea3c 100644 --- a/addons/test_mail/tests/test_mail_followers.py +++ b/addons/test_mail/tests/test_mail_followers.py @@ -123,6 +123,10 @@ class AdvancedFollowersTest(common.BaseFunctionalTest): }) Subtype = cls.env['mail.message.subtype'] + + # clean demo data to avoid interferences + Subtype.search([('res_model', 'in', ['mail.test', 'mail.test.track'])]).unlink() + cls.sub_nodef = Subtype.create({'name': 'Sub NoDefault', 'default': False, 'res_model': 'mail.test'}) 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'}) @@ -187,7 +191,7 @@ class AdvancedFollowersTest(common.BaseFunctionalTest): 'umbrella_id': umbrella.id, }) - all_defaults = self.env['mail.message.subtype'].search([('default', '=', True), '|', ('res_model', '=', 'mail.test.full'), ('res_model', '=', False)]) + all_defaults = self.env['mail.message.subtype'].search([('default', '=', True), '|', ('res_model', '=', 'mail.test.track'), ('res_model', '=', False)]) external_defaults = all_defaults.filtered(lambda subtype: not subtype.internal) self.assertEqual(sub1.message_partner_ids, self.user_portal.partner_id | self.user_employee.partner_id) diff --git a/addons/test_mail/tests/test_message_track.py b/addons/test_mail/tests/test_message_track.py index e66286fd406..ab8da10bd8d 100644 --- a/addons/test_mail/tests/test_message_track.py +++ b/addons/test_mail/tests/test_message_track.py @@ -26,17 +26,6 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): def setUp(self): super(TestTracking, self).setUp() - self.track_subtype_umbrella = self.env['mail.message.subtype'].create({ - 'name': 'Umbrella', - 'description': 'Umbrella Changed', - }) - self.env['ir.model.data'].create({ - 'name': 'track_subtype_umbrella', - 'model': 'mail.message.subtype', - 'module': 'mail', - 'res_id': self.track_subtype_umbrella.id - }) - record = self.env['mail.test.full'].sudo(self.user_employee).with_context(self._quick_create_ctx).create({ 'name': 'Test', }) @@ -78,10 +67,10 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): """ Update some tracked fields linked to some subtype -> message with onchange + always tracked values """ self.record.message_subscribe( partner_ids=[self.user_admin.partner_id.id], - subtype_ids=[self.track_subtype_umbrella.id] + subtype_ids=[self.env.ref('test_mail.st_mail_test_full_umbrella_upd').id] ) - umbrella = self.env['mail.test'].create({'name': 'Umbrella'}) + umbrella = self.env['mail.test'].with_context(mail_create_nosubscribe=True).create({'name': 'Umbrella'}) self.record.write({ 'name': 'Test2', 'email_from': 'noone@example.com', @@ -89,7 +78,7 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): }) # 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.track_subtype_umbrella) + self.assertEqual(self.record.message_ids.subtype_id, self.env.ref('test_mail.st_mail_test_full_umbrella_upd')) # no specific recipients except those following umbrella self.assertEqual(self.record.message_ids.partner_ids, self.env['res.partner']) @@ -104,13 +93,7 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): def test_message_track_template(self): """ Update some tracked fields linked to some template -> message with onchange + always tracked values """ - mail_template = self.env['mail.template'].create({ - 'model_id': self.env.ref('test_mail.model_mail_test_full').id, - 'body_html': '

Hello ${object.name}

', - 'subject': 'Test Template', - 'partner_to': '${object.customer_id.id | safe}', - }) - self.record.write({'mail_template': mail_template.id}) + self.record.write({'mail_template': self.env.ref('test_mail.mail_test_full_tracking_tpl').id}) self.assertEqual(self.record.message_ids, self.env['mail.message']) self.record.write({