diff options
| author | Raphael Collet <rco@odoo.com> | 2019-08-14 07:35:49 +0000 |
|---|---|---|
| committer | Denis Ledoux <dle@odoo.com> | 2019-08-20 12:43:59 +0000 |
| commit | 9920f20e4c7753bc17bea71dea3a90f7de687196 (patch) | |
| tree | 6a3d0258c10a8ccb1d85949ddafdeb070de78121 /odoo/addons/test_testing_utilities | |
| parent | e28d3aa4d3851d72deba08c236072d002f83216a (diff) | |
[IMP] models: ORM speedup
This branch is the combination of several optimizations in the ORM:
* store field values once in the cache: the cache reflects more
faithfully the database, only fields that explicitly depend on the
context have an extra indirection in the cache;
* delay recomputations by default: use method `recompute` to explicitly
flush out pending recomputations;
* delay updates in method `write`: updates are stored in a data
structure that can be flushed efficiently to the database with method
`flush` (which also flush out recomputations);
* make method `modified` take advantage of inverse fields to inverse
dependencies;
* filter records by evaluating a domain on records in Python;
* a computed field with `readonly=False` behaves like a normal field
with an onchange method;
* computed fields are computed in superuser mode by default.
Work done by Toufik Ben Jaa, Raphael Collet, Denis Ledoux and Fabien
Pinckaers.
closes odoo/odoo#35659
Signed-off-by: Denis Ledoux <beledouxdenis@users.noreply.github.com>
Diffstat (limited to 'odoo/addons/test_testing_utilities')
| -rw-r--r-- | odoo/addons/test_testing_utilities/tests/__init__.py | 1 | ||||
| -rw-r--r-- | odoo/addons/test_testing_utilities/tests/test_methods.py | 28 |
2 files changed, 29 insertions, 0 deletions
diff --git a/odoo/addons/test_testing_utilities/tests/__init__.py b/odoo/addons/test_testing_utilities/tests/__init__.py index 0c0095dfd37..7be78314304 100644 --- a/odoo/addons/test_testing_utilities/tests/__init__.py +++ b/odoo/addons/test_testing_utilities/tests/__init__.py @@ -1,2 +1,3 @@ # -*- coding: utf-8 -*- +from . import test_methods from . import test_form_impl diff --git a/odoo/addons/test_testing_utilities/tests/test_methods.py b/odoo/addons/test_testing_utilities/tests/test_methods.py new file mode 100644 index 00000000000..031d3a5e2ec --- /dev/null +++ b/odoo/addons/test_testing_utilities/tests/test_methods.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo.tests import common + + +class TestBasic(common.TransactionCase): + def test_assertRecordValues(self): + X1 = {'f1': "X", 'f2': 1} + Y2 = {'f1': "Y", 'f2': 2} + Y3 = {'f1': "Y", 'f2': 3} + records = self.env['test_testing_utilities.a'].create([X1, Y2]) + + # match in any order + self.assertRecordValues(records, [X1, Y2]) + self.assertRecordValues(records, [Y2, X1]) + + # fail if wrong size + with self.assertRaises(AssertionError): + self.assertRecordValues(records, [X1]) + with self.assertRaises(AssertionError): + self.assertRecordValues(records, [X1, Y2, Y3]) + + # fail if fields don't match + with self.assertRaises(AssertionError): + self.assertRecordValues(records, [X1, Y3]) + with self.assertRaises(AssertionError): + self.assertRecordValues(records, [Y3, X1]) |
