[IMP] test_performance: add test of reversed BaseModel
task-2687953 Part-of: odoo/odoo#79622
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
|
||||
from odoo import api, models, Command
|
||||
from odoo.addons.base.tests.common import SavepointCaseWithUserDemo
|
||||
from odoo.tools import mute_logger
|
||||
from odoo.tools import mute_logger, unique
|
||||
from odoo.exceptions import AccessError
|
||||
|
||||
|
||||
@@ -382,6 +382,56 @@ class TestAPI(SavepointCaseWithUserDemo):
|
||||
self.assertIn('company_type', partner1._cache)
|
||||
self.assertNotIn('company_type', partner2._cache)
|
||||
|
||||
def test_60_reversed(self):
|
||||
records = self.partners
|
||||
self.assertGreater(len(records), 1)
|
||||
|
||||
# check order
|
||||
self.assertEqual(list(reversed(records)), list(reversed(list(records))))
|
||||
|
||||
first = next(iter(records))
|
||||
last = next(reversed(records))
|
||||
self.assertEqual(first, records[0])
|
||||
self.assertEqual(last, records[-1])
|
||||
|
||||
# check prefetching
|
||||
prefetch_ids = records.ids
|
||||
reversed_ids = [record.id for record in reversed(records)]
|
||||
|
||||
self.assertEqual(list(first._prefetch_ids), prefetch_ids)
|
||||
self.assertEqual(list(last._prefetch_ids), reversed_ids)
|
||||
|
||||
self.assertEqual(list(reversed(first._prefetch_ids)), reversed_ids)
|
||||
self.assertEqual(list(reversed(last._prefetch_ids)), prefetch_ids)
|
||||
|
||||
# check prefetching across many2one field
|
||||
prefetch_ids = records.state_id.ids
|
||||
reversed_ids = list(unique(
|
||||
record.state_id.id
|
||||
for record in reversed(records)
|
||||
if record.state_id
|
||||
))
|
||||
|
||||
self.assertEqual(list(first.state_id._prefetch_ids), prefetch_ids)
|
||||
self.assertEqual(list(last.state_id._prefetch_ids), reversed_ids)
|
||||
|
||||
self.assertEqual(list(reversed(first.state_id._prefetch_ids)), reversed_ids)
|
||||
self.assertEqual(list(reversed(last.state_id._prefetch_ids)), prefetch_ids)
|
||||
|
||||
# check prefetching across x2many field
|
||||
prefetch_ids = records.child_ids.ids
|
||||
reversed_ids = list(unique(
|
||||
child.id
|
||||
for record in reversed(records)
|
||||
for child in record.child_ids
|
||||
))
|
||||
|
||||
self.assertEqual(list(first.child_ids._prefetch_ids), prefetch_ids)
|
||||
self.assertEqual(list(last.child_ids._prefetch_ids), reversed_ids)
|
||||
|
||||
self.assertEqual(list(reversed(first.child_ids._prefetch_ids)), reversed_ids)
|
||||
self.assertEqual(list(reversed(last.child_ids._prefetch_ids)), prefetch_ids)
|
||||
|
||||
@mute_logger('odoo.models')
|
||||
def test_70_one(self):
|
||||
""" Check method one(). """
|
||||
|
||||
@@ -66,6 +66,21 @@ class TestPerformance(SavepointCaseWithUserDemo):
|
||||
for record in records:
|
||||
record.value_pc
|
||||
|
||||
@users('__system__', 'demo')
|
||||
@warmup
|
||||
def test_reversed_read_base(self):
|
||||
records = self.env['test_performance.base'].search([])
|
||||
self.assertEqual(len(records), 5)
|
||||
with self.assertQueryCount(__system__=5, demo=5):
|
||||
# without cache
|
||||
for record in reversed(records):
|
||||
record.partner_id
|
||||
|
||||
with self.assertQueryCount(__system__=5, demo=5):
|
||||
# without cache
|
||||
for record in reversed(records):
|
||||
record.value_ctx
|
||||
|
||||
@warmup
|
||||
def test_read_base_depends_context(self):
|
||||
""" Compute in batch even when in cache in another context. """
|
||||
|
||||
Reference in New Issue
Block a user