[IMP] test_read_group: read_group with one2many auto-joined fields

This commit is contained in:
Raphael Collet
2020-05-20 12:44:38 +00:00
parent 2adaeb589b
commit e950c395b7
4 changed files with 62 additions and 0 deletions
@@ -4,3 +4,5 @@ access_test_read_group_aggregate_boolean,access_test_read_group_aggregate_boolea
access_test_read_group_aggregate,access_test_read_group_aggregate,model_test_read_group_aggregate,,1,0,0,0
access_test_read_group_on_selection,access_test_read_group_on_selection,model_test_read_group_on_selection,,1,0,0,0
access_test_read_group_fill_temporal,access_test_read_group_fill_temporal,model_test_read_group_fill_temporal,,1,0,0,0
access_test_read_group_order,access_test_read_group_order,model_test_read_group_order,,1,0,0,0
access_test_read_group_order_line,access_test_read_group_order_line,model_test_read_group_order_line,,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 access_test_read_group_aggregate access_test_read_group_aggregate model_test_read_group_aggregate 1 0 0 0
5 access_test_read_group_on_selection access_test_read_group_on_selection model_test_read_group_on_selection 1 0 0 0
6 access_test_read_group_fill_temporal access_test_read_group_fill_temporal model_test_read_group_fill_temporal 1 0 0 0
7 access_test_read_group_order access_test_read_group_order model_test_read_group_order 1 0 0 0
8 access_test_read_group_order_line access_test_read_group_order_line model_test_read_group_order_line 1 0 0 0
+15
View File
@@ -50,3 +50,18 @@ class FillTemporal(models.Model):
date = fields.Date()
datetime = fields.Datetime()
value = fields.Integer()
class Order(models.Model):
_name = 'test_read_group.order'
_description = 'Sales order'
line_ids = fields.One2many('test_read_group.order.line', 'order_id')
class OrderLine(models.Model):
_name = 'test_read_group.order.line'
_description = 'Sales order line'
order_id = fields.Many2one('test_read_group.order', ondelete='cascade')
value = fields.Integer()
@@ -3,3 +3,4 @@ from . import test_empty
from . import test_group_expand
from . import test_group_operator
from . import test_fill_temporal
from . import test_auto_join
@@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
from odoo.tests import common
class TestAutoJoin(common.TransactionCase):
""" Test what happens when grouping with a domain using a one2many field with auto_join. """
def test_auto_join(self):
model = self.env['test_read_group.order']
records = model.create([{
'line_ids': [(0, 0, {'value': 1}), (0, 0, {'value': 2})],
}, {
'line_ids': [(0, 0, {'value': 1})],
}])
domain1 = [('id', 'in', records.ids), ('line_ids.value', '=', 1)]
domain2 = [('id', 'in', records.ids), ('line_ids.value', '>', 0)]
# reference results
self.assertEqual(len(model.search(domain1)), 2)
self.assertEqual(len(model.search(domain2)), 2)
result1 = model.read_group(domain1, [], [])
self.assertEqual(len(result1), 1)
self.assertEqual(result1[0]['__count'], 2)
result2 = model.read_group(domain2, [], [])
self.assertEqual(len(result2), 1)
self.assertEqual(result2[0]['__count'], 2)
# same requests, with auto_join
self.patch(type(model).line_ids, 'auto_join', True)
self.assertEqual(len(model.search(domain1)), 2)
self.assertEqual(len(model.search(domain2)), 2)
result1 = model.read_group(domain1, [], [])
self.assertEqual(len(result1), 1)
self.assertEqual(result1[0]['__count'], 2)
# TO FIX: the first record is counted twice!
result2 = model.read_group(domain2, [], [])
self.assertEqual(len(result2), 1)
self.assertEqual(result2[0]['__count'], 3)