diff options
| author | Kevin Baptiste <kba@odoo.com> | 2019-10-18 11:43:32 +0000 |
|---|---|---|
| committer | Kevin Baptiste <kba@odoo.com> | 2019-11-19 07:50:34 +0000 |
| commit | 2c6cd81f30a991fd21b0f93fe41ed25736943e79 (patch) | |
| tree | 2f1489c17f823e44ce3cd38bb70ad53de7652d15 /addons/test_mail/tests | |
| parent | abd9d1506ea4af29a98278c4cbd514e2cf4c54f3 (diff) | |
[IMP] mail: track fields based on ir_model_fields
The tracked field is now a relation to the corresponding ir.model.field.
This prevents potential privacy issues should the field be deleted or renamed.
closes odoo/odoo#39232
Taskid: 2088634
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Diffstat (limited to 'addons/test_mail/tests')
| -rw-r--r-- | addons/test_mail/tests/common.py | 2 | ||||
| -rw-r--r-- | addons/test_mail/tests/test_message_track.py | 1 | ||||
| -rw-r--r-- | addons/test_mail/tests/test_performance.py | 29 |
3 files changed, 29 insertions, 3 deletions
diff --git a/addons/test_mail/tests/common.py b/addons/test_mail/tests/common.py index d73a091b7b2..bda876d61ef 100644 --- a/addons/test_mail/tests/common.py +++ b/addons/test_mail/tests/common.py @@ -176,7 +176,7 @@ class BaseFunctionalTest(common.SavepointCase): def assertTracking(self, message, data): tracking_values = message.sudo().tracking_value_ids for field_name, value_type, old_value, new_value in data: - tracking = tracking_values.filtered(lambda track: track.field == field_name) + tracking = tracking_values.filtered(lambda track: track.field.name == field_name) self.assertEqual(len(tracking), 1) if value_type in ('char', 'integer'): self.assertEqual(tracking.old_value_char, old_value) diff --git a/addons/test_mail/tests/test_message_track.py b/addons/test_mail/tests/test_message_track.py index c4482be9e9d..05f375e3b3b 100644 --- a/addons/test_mail/tests/test_message_track.py +++ b/addons/test_mail/tests/test_message_track.py @@ -162,6 +162,7 @@ class TestTracking(common.BaseFunctionalTest, common.MockEmails): def test_unlinked_field(self): record_sudo = self.record.sudo() record_sudo.write({'email_from': 'X'}) # create a tracking value + record_sudo.flush() self.assertEqual(len(record_sudo.message_ids.tracking_value_ids), 1) ir_model_field = self.env['ir.model.fields'].search([ ('model', '=', 'mail.test.full'), diff --git a/addons/test_mail/tests/test_performance.py b/addons/test_mail/tests/test_performance.py index c26fe1a81f4..d4a32557eff 100644 --- a/addons/test_mail/tests/test_performance.py +++ b/addons/test_mail/tests/test_performance.py @@ -609,7 +609,7 @@ class TestMailComplexPerformance(BaseMailPerformance): rec1 = rec.with_context(active_test=False) # to see inactive records self.assertEqual(rec1.message_partner_ids, self.user_portal.partner_id | self.env.user.partner_id) self.assertEqual(len(rec1.message_ids), 1) - with self.assertQueryCount(__system__=86, emp=87): + with self.assertQueryCount(__system__=87, emp=88): rec.write({ 'name': 'Test2', 'umbrella_id': self.umbrella.id, @@ -646,13 +646,14 @@ class TestMailComplexPerformance(BaseMailPerformance): rec1 = rec.with_context(active_test=False) # to see inactive records self.assertEqual(rec1.message_partner_ids, self.user_portal.partner_id | self.env.user.partner_id) - with self.assertQueryCount(__system__=94, emp=95): + with self.assertQueryCount(__system__=95, emp=96): rec.write({ 'name': 'Test2', 'umbrella_id': umbrella_id, 'customer_id': customer_id, }) + self.assertEqual(rec1.message_partner_ids, self.partners | self.env.user.partner_id | self.user_portal.partner_id) # write tracking message self.assertEqual(rec1.message_ids[0].subtype_id, self.env.ref('test_mail.st_mail_test_full_umbrella_upd')) @@ -837,3 +838,27 @@ class TestMailHeavyPerformancePost(BaseMailPerformance): self.assertEqual(self.attachements.mapped('res_model'), [record._name for i in range(3)]) self.assertEqual(self.attachements.mapped('res_id'), [record.id for i in range(3)]) # self.assertEqual(record.message_ids[0].notified_partner_ids, []) + + +@tagged('mail_performance') +class TestTrackingPerformance(BaseMailPerformance): + + @users('__system__', 'demo') + @warmup + def test_tracking_multiple_fields(self): + """ Check that tracking multiple fields is scalable """ + + record = self.env['mail.test.tracking'].create({'name': 'Zizizatestname'}) + with self.assertQueryCount(__system__=3, demo=3): + record.write({'name': 'Zizizanewtestname'}) + record.flush() + + with self.assertQueryCount(__system__=5, demo=5): + record.write({'field_%s' % (i): 'Tracked Char Fields %s' % (i) for i in range(3)}) + record.flush() + + with self.assertQueryCount(__system__=10, demo=10): + record.write({'field_%s' % (i): 'Field Without Cache %s' % (i) for i in range(3)}) + record.flush() + record.write({'field_%s' % (i): 'Field With Cache %s' % (i) for i in range(3)}) + record.flush() |
