diff options
| author | Raphael Collet <rco@odoo.com> | 2020-05-20 12:23:06 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-05-20 12:44:38 +0000 |
| commit | e950c395b7a2110a19af61220bee3fb8fa5799bc (patch) | |
| tree | dfb2e70268f0762748fabb5974f54656e5373467 /odoo/addons/test_read_group/tests/test_auto_join.py | |
| parent | 2adaeb589b0116b8f76f76f9c257b58786a7fabe (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.py | 44 |
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) |
