[FIX] core: add test to ensure correct call of _compute_display_name

Add test to ensure that `_compute_display_name` is called once with
the correct recordset during `read_group`. Also
fix and small typo in the documentation of `read_group`.

closes odoo/odoo#132261

X-original-commit: 60477586f11ca7eb698240a6bd3f565b5a9e3279
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
Signed-off-by: Raphael Collet <rco@odoo.com>
Signed-off-by: Rémy Voet (ryv) <ryv@odoo.com>
This commit is contained in:
Rémy Voet (ryv)
2023-08-18 12:17:57 +02:00
parent 4dc9e42a64
commit fcb092af12
2 changed files with 17 additions and 4 deletions
@@ -2,12 +2,12 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from collections import defaultdict
import json
from unittest.mock import patch
import logging
from odoo.addons.base.tests.common import SavepointCaseWithUserDemo
from odoo.tests.common import TransactionCase, users, warmup, tagged
from odoo.tools import mute_logger, json_default, sql
from odoo.tools import mute_logger, sql
from odoo import Command
_logger = logging.getLogger(__name__)
@@ -634,6 +634,19 @@ class TestPerformance(SavepointCaseWithUserDemo):
result = model.read_group([], ['partner_id', 'value'], ['partner_id'])
self.assertEqual(result, expected)
# Modify the data so that each record has the same partner,
# and test that the _compute_display_name is called once with the correct recordset.
all_records = model.search([])
all_records.partner_id = all_records[0].partner_id
self.env.invalidate_all()
old_compute_display_name = self.registry['res.partner']._compute_display_name
with patch.object(self.registry['res.partner'], '_compute_display_name', side_effect=old_compute_display_name, autospec=True) as compute_display_name_spy:
model.read_group([], ['__count'], ['partner_id', 'value'], lazy=False)
compute_display_name_spy.assert_called_once()
self.assertEqual(compute_display_name_spy.call_args.args[0].id, all_records[0].partner_id.id)
@tagged('bacon_and_eggs')
class TestIrPropertyOptimizations(TransactionCase):
+2 -2
View File
@@ -2471,8 +2471,8 @@ class BaseModel(metaclass=MetaModel):
or a string 'field:granularity'. Right now, the only supported granularities
are 'day', 'week', 'month', 'quarter' or 'year', and they only make sense for
date/datetime fields.
:param int offset: optional number of records to skip
:param int limit: optional max number of records to return
:param int offset: optional number of groups to skip
:param int limit: optional max number of groups to return
:param str orderby: optional ``order by`` specification, for
overriding the natural sort ordering of the
groups, see also :py:meth:`~osv.osv.osv.search`