changeset 4eb15d8c9f95 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=4eb15d8c9f95
description:
        Use specific model for OR2UNION tests

        issue10832
        review362881002
diffstat:

 trytond/tests/modelsql.py      |  19 ++++++++++++++++---
 trytond/tests/test_modelsql.py |  19 +++++++++++++------
 2 files changed, 29 insertions(+), 9 deletions(-)

diffs (133 lines):

diff -r 428bf1c84a3d -r 4eb15d8c9f95 trytond/tests/modelsql.py
--- a/trytond/tests/modelsql.py Wed Oct 06 17:20:40 2021 +0200
+++ b/trytond/tests/modelsql.py Thu Oct 07 17:46:14 2021 +0200
@@ -87,10 +87,15 @@
     "ModelSQL Search OR to UNION optimization"
     __name__ = 'test.modelsql.search.or2union'
     name = fields.Char("Name")
-    target = fields.Many2One('test.modelsql.read.target', "Target")
-    targets = fields.One2Many('test.modelsql.read.target', 'parent', "Targets")
+    target = fields.Many2One('test.modelsql.search.or2union.target', "Target")
+    targets = fields.One2Many(
+        'test.modelsql.search.or2union.target', 'parent', "Targets")
     reference = fields.Reference(
-        "Reference", [(None, ""), ('test.modelsql.read.target', "Target")])
+        "Reference",
+        [
+            (None, ""),
+            ('test.modelsql.search.or2union.target', "Target"),
+            ])
     integer = fields.Integer("Integer")
 
     @classmethod
@@ -99,6 +104,13 @@
         return [table.integer + 1]
 
 
+class ModelSQLSearchOR2UnionTarget(ModelSQL):
+    "ModelSQL Target to test read"
+    __name__ = 'test.modelsql.search.or2union.target'
+    name = fields.Char("Name")
+    parent = fields.Many2One('test.modelsql.search.or2union', "Parent")
+
+
 class ModelSQLForeignKey(DeactivableMixin, ModelSQL):
     "ModelSQL Foreign Key"
     __name__ = 'test.modelsql.fk'
@@ -195,6 +207,7 @@
         ModelSQLOne2ManyTarget,
         ModelSQLSearch,
         ModelSQLSearchOR2Union,
+        ModelSQLSearchOR2UnionTarget,
         ModelSQLForeignKey,
         ModelSQLForeignKeyTarget,
         NullOrder,
diff -r 428bf1c84a3d -r 4eb15d8c9f95 trytond/tests/test_modelsql.py
--- a/trytond/tests/test_modelsql.py    Wed Oct 06 17:20:40 2021 +0200
+++ b/trytond/tests/test_modelsql.py    Thu Oct 07 17:46:14 2021 +0200
@@ -651,7 +651,7 @@
         Test searching for 'OR'-ed domain
         """
         pool = Pool()
-        Model = pool.get('test.modelsql.read')
+        Model = pool.get('test.modelsql.search.or2union')
 
         Model.create([{
                     'name': 'A',
@@ -673,9 +673,12 @@
             # Mocking in order not to trigger the split
             no_split.side_effect = lambda d: (d, [])
             result_without_split = Model.search(domain)
+            query_without_split = Model.search(domain, query=True)
         self.assertEqual(
             Model.search(domain),
             result_without_split)
+        self.assertIn('UNION', str(Model.search(domain, query=True)))
+        self.assertNotIn('UNION', str(query_without_split))
 
     @with_transaction()
     def test_search_or_to_union_order_eager_field(self):
@@ -684,7 +687,7 @@
         """
         pool = Pool()
         Model = pool.get('test.modelsql.search.or2union')
-        Target = pool.get('test.modelsql.read.target')
+        Target = pool.get('test.modelsql.search.or2union.target')
 
         target_a, target_b, target_c = Target.create([
                 {'name': 'A'}, {'name': 'B'}, {'name': 'C'},
@@ -725,7 +728,7 @@
         """
         pool = Pool()
         Model = pool.get('test.modelsql.search.or2union')
-        Target = pool.get('test.modelsql.read.target')
+        Target = pool.get('test.modelsql.search.or2union.target')
 
         target_a, target_b, target_c = Target.create([
                 {'name': 'A'}, {'name': 'B'}, {'name': 'C'},
@@ -766,7 +769,7 @@
         """
         pool = Pool()
         Model = pool.get('test.modelsql.search.or2union')
-        Target = pool.get('test.modelsql.read.target')
+        Target = pool.get('test.modelsql.search.or2union.target')
 
         target_a, target_b, target_c = Target.create([
                 {'name': 'A'}, {'name': 'B'}, {'name': 'C'},
@@ -807,7 +810,7 @@
         """
         pool = Pool()
         Model = pool.get('test.modelsql.search.or2union')
-        Target = pool.get('test.modelsql.read.target')
+        Target = pool.get('test.modelsql.search.or2union.target')
 
         target_a, target_b, target_c = Target.create([
                 {'name': 'A'}, {'name': 'B'}, {'name': 'C'},
@@ -850,7 +853,7 @@
         Test searching for 'OR'-ed domain without local clauses
         """
         pool = Pool()
-        Model = pool.get('test.modelsql.read')
+        Model = pool.get('test.modelsql.search.or2union')
 
         Model.create([{
                     'name': 'A',
@@ -866,14 +869,18 @@
 
         domain = ['OR',
             ('targets.name', 'ilike', '%A'),
+            ('targets.name', 'ilike', '%B'),
             ]
         with patch('trytond.model.modelsql.split_subquery_domain') as no_split:
             # Mocking in order not to trigger the split
             no_split.side_effect = lambda d: (d, [])
             result_without_split = Model.search(domain)
+            query_without_split = Model.search(domain, query=True)
         self.assertEqual(
             Model.search(domain),
             result_without_split)
+        self.assertIn('UNION', str(Model.search(domain, query=True)))
+        self.assertNotIn('UNION', str(query_without_split))
 
     def test_split_subquery_domain_empty(self):
         """

Reply via email to