diff options
| author | Raphael Collet <rco@odoo.com> | 2020-06-17 16:48:00 +0000 |
|---|---|---|
| committer | Raphael Collet <rco@odoo.com> | 2020-08-18 13:02:41 +0000 |
| commit | 0f7f163d2e2bb9cc38f2b037dae6df2eae9466a4 (patch) | |
| tree | feacbae81dfd362e6493c41280a80604a215a649 /odoo/addons/base/tests/test_expression.py | |
| parent | 6f87bbbfc8e34b412fe9c129c002269540fa5a30 (diff) | |
[REF] core: improve the API and implementation of Query
Introduce better methods for introducing tables, join clauses and where
clauses to the Query object, and other methods to generate a complete
SELECT query. The Query object can also behave as a tuple of ids, where
the query is made on demand, and the result is memoized.
Diffstat (limited to 'odoo/addons/base/tests/test_expression.py')
| -rw-r--r-- | odoo/addons/base/tests/test_expression.py | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/odoo/addons/base/tests/test_expression.py b/odoo/addons/base/tests/test_expression.py index 88f86fbcb38..4e1c6197b10 100644 --- a/odoo/addons/base/tests/test_expression.py +++ b/odoo/addons/base/tests/test_expression.py @@ -1014,6 +1014,37 @@ class TestQueries(TransactionCase): ''']): Model.search(domain) + def test_order(self): + Model = self.env['res.partner'] + Model.search([('name', 'like', 'foo')]) + + with self.assertQueries([''' + SELECT "res_partner".id + FROM "res_partner" + WHERE (("res_partner"."active" = %s) AND ("res_partner"."name"::text LIKE %s)) + ORDER BY "res_partner"."display_name" + ''']): + Model.search([('name', 'like', 'foo')]) + + with self.assertQueries([''' + SELECT "res_partner".id + FROM "res_partner" + WHERE (("res_partner"."active" = %s) AND ("res_partner"."name"::text LIKE %s)) + ORDER BY "res_partner"."id" + ''']): + Model.search([('name', 'like', 'foo')], order='id') + + def test_count(self): + Model = self.env['res.partner'] + Model.search([('name', 'like', 'foo')]) + + with self.assertQueries([''' + SELECT count(1) + FROM "res_partner" + WHERE (("res_partner"."active" = %s) AND ("res_partner"."name"::text LIKE %s)) + ''']): + Model.search_count([('name', 'like', 'foo')]) + def test_translated_field(self): self.env['res.lang']._activate_lang('fr_FR') Model = self.env['res.partner.title'].with_context(lang='fr_FR') @@ -1057,10 +1088,11 @@ class TestQueries(TransactionCase): with self.assertQueries([''' SELECT "res_users".id - FROM "res_users", "res_partner" AS "res_users__partner_id" + FROM "res_users" + LEFT JOIN "res_partner" AS "res_users__partner_id" ON + ("res_users"."partner_id" = "res_users__partner_id"."id") WHERE ("res_users"."active" = %s) AND ("res_users"."id" = %s) - AND ("res_users"."partner_id" = "res_users__partner_id"."id") AND ("res_users__partner_id"."id" = %s) ORDER BY "res_users__partner_id"."name", "res_users"."login" ''']): |
