summaryrefslogtreecommitdiff
path: root/odoo/addons/base/tests/test_api.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/base/tests/test_api.py')
-rw-r--r--odoo/addons/base/tests/test_api.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/odoo/addons/base/tests/test_api.py b/odoo/addons/base/tests/test_api.py
index 270a8d75df4..dd003711f32 100644
--- a/odoo/addons/base/tests/test_api.py
+++ b/odoo/addons/base/tests/test_api.py
@@ -368,6 +368,31 @@ class TestAPI(common.TransactionCase):
same_prefetch(empty, empty.category_id)
@mute_logger('odoo.models')
+ def test_60_prefetch_read(self):
+ """ Check that reading a field computes it on self only. """
+ Partner = self.env['res.partner']
+ field = type(Partner).company_type
+ self.assertTrue(field.compute and not field.store)
+
+ partner1 = Partner.create({'name': 'Foo'})
+ partner2 = Partner.create({'name': 'Bar', 'parent_id': partner1.id})
+ self.assertEqual(partner1.child_ids, partner2)
+
+ # reading partner1 should not prefetch 'company_type' on partner2
+ self.env.clear()
+ partner1 = partner1.with_prefetch()
+ partner1.read(['company_type'])
+ self.assertIn('company_type', partner1._cache)
+ self.assertNotIn('company_type', partner2._cache)
+
+ # reading partner1 should not prefetch 'company_type' on partner2
+ self.env.clear()
+ partner1 = partner1.with_prefetch()
+ partner1.read(['child_ids', 'company_type'])
+ self.assertIn('company_type', partner1._cache)
+ self.assertNotIn('company_type', partner2._cache)
+
+ @mute_logger('odoo.models')
def test_70_one(self):
""" Check method one(). """
# check with many records