summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThibault Delavallée <tde@odoo.com>2017-12-05 15:02:14 +0100
committerThibault Delavallée <tde@odoo.com>2017-12-12 15:46:37 +0100
commitcde06d5f5c7cbbe11366f6bb39f825172d8fe097 (patch)
tree4277b3f1ec3cc0c5cf050221a8151d414a709cb5
parent56ae134bb223d16da712f5dcfe0d9a221feb5d72 (diff)
[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.
-rw-r--r--addons/test_mail/__manifest__.py2
-rw-r--r--addons/test_mail/data/subtype_demo.xml28
-rw-r--r--addons/test_mail/data/template_demo.xml24
-rw-r--r--addons/test_mail/models/test_mail_models.py5
-rw-r--r--addons/test_mail/tests/test_mail_followers.py6
-rw-r--r--addons/test_mail/tests/test_message_track.py25
6 files changed, 66 insertions, 24 deletions
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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+
+ <record id="st_mail_test_full_umbrella_upd" model="mail.message.subtype">
+ <field name="name">Umbrella Changed Subtype</field>
+ <field name="description">Umbrella Changed</field>
+ <field name="res_model">mail.test.full</field>
+ <field name="default" eval="True"/>
+ <field name="internal" eval="False"/>
+ </record>
+
+ <record id="st_mail_test_default" model="mail.message.subtype">
+ <field name="name">Umbrella Default Subtype</field>
+ <field name="res_model">mail.test</field>
+ <field name="default" eval="True"/>
+ <field name="internal" eval="False"/>
+ </record>
+ <!-- when subscribing to mail.test umbrella, delegate to mail.test.full child -->
+ <record id="st_mail_test_child_full" model="mail.message.subtype">
+ <field name="name">Umbrella Child Full Subtype</field>
+ <field name="res_model">mail.test</field>
+ <field name="parent_id" eval="ref('test_mail.st_mail_test_full_umbrella_upd')"/>
+ <field name="relation_field">umbrella_id</field>
+ <field name="default" eval="False"/>
+ <field name="internal" eval="False"/>
+ </record>
+
+</odoo>
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 @@
+<?xml version="1.0" encoding="utf-8"?>
+<odoo>
+ <record id="mail_test_full_tracking_tpl" model="mail.template">
+ <field name="name">Mail Test Full: Tracking Template</field>
+ <field name="subject">Test Template</field>
+ <field name="partner_to">${object.customer_id.id | safe}</field>
+ <field name="body_html" type="xml"><p>Hello ${object.name}</p></field>
+ <field name="model_id" ref="test_mail.model_mail_test_full"/>
+ <field name="auto_delete" eval="True"/>
+ </record>
+
+ <record id="mail_test_tpl" model="mail.template">
+ <field name="name">Mail Test: Template</field>
+ <field name="subject">Post on ${object.name}</field>
+ <field name="partner_to">${object.customer_id.id}</field>
+ <field name="body_html" type="xml"><p>Adding stuff on ${object.name}</p></field>
+ <field name="model_id" ref="test_mail.model_mail_test"/>
+ <field name="auto_delete" eval="True"/>
+ </record>
+
+ <template id="mail_test_full_tracking_view">
+ <p><span t-esc="object.name"/> datetime has been updated to <span t-esc="object.datetime"/></p>
+ </template>
+</odoo>
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': '<p>Hello ${object.name}</p>',
- '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({