summaryrefslogtreecommitdiff
path: root/odoo/addons/test_read_group/tests/test_auto_join.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2020-05-20 12:23:06 +0000
committerRaphael Collet <rco@odoo.com>2020-05-20 12:44:38 +0000
commite950c395b7a2110a19af61220bee3fb8fa5799bc (patch)
treedfb2e70268f0762748fabb5974f54656e5373467 /odoo/addons/test_read_group/tests/test_auto_join.py
parent2adaeb589b0116b8f76f76f9c257b58786a7fabe (diff)
[IMP] test_read_group: read_group with one2many auto-joined fields
Diffstat (limited to 'odoo/addons/test_read_group/tests/test_auto_join.py')
-rw-r--r--odoo/addons/test_read_group/tests/test_auto_join.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/odoo/addons/test_read_group/tests/test_auto_join.py b/odoo/addons/test_read_group/tests/test_auto_join.py
new file mode 100644
index 00000000000..6c5e7a88f77
--- /dev/null
+++ b/odoo/addons/test_read_group/tests/test_auto_join.py
@@ -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)