diff options
Diffstat (limited to 'odoo/addons/base/tests/test_api.py')
| -rw-r--r-- | odoo/addons/base/tests/test_api.py | 25 |
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 cbb63daec59..3894629d736 100644 --- a/odoo/addons/base/tests/test_api.py +++ b/odoo/addons/base/tests/test_api.py @@ -359,6 +359,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 |
