Odoo18-Base/odoo/addons/test_read_group/tests/test_override.py

33 lines
1.5 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
from psycopg2.errors import GroupingError
from odoo import models
from odoo.tests.common import tagged, TransactionCase
@tagged('-at_install', 'post_install')
class TestReadGroupOverride(TransactionCase):
def test_order_for_groupby(self):
Order = self.env['test_read_group.order']
many2one_field = Order._fields['many2one_id']
self.addCleanup(setattr, many2one_field, 'comodel_name', many2one_field.comodel_name)
BaseModel = models.BaseModel
for Model in self.env.registry.values():
if not Model._abstract and Model._auto and (
Model._order_field_to_sql is not BaseModel._order_field_to_sql
or Model._order_to_sql is not BaseModel._order_to_sql
or Model._read_group_orderby is not BaseModel._read_group_orderby
):
# methods for customized order are overridden by Model
# change comodel_name of a many2one field as a hack for the test
many2one_field.comodel_name = Model._name
try:
Order.read_group([], ['many2one_id'], ['many2one_id'])
except GroupingError as e:
self.assertEqual(
e, None,
f'Bad method override for model {Model._name}. '
'Fields used by both customized order and Model._order '
'must be added to the query.groupby when query.groupby '
'is not empty to avoid GroupingError.'
)