summaryrefslogtreecommitdiff
path: root/odoo/addons/test_testing_utilities/tests/test_methods.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@odoo.com>2019-08-14 07:35:49 +0000
committerDenis Ledoux <dle@odoo.com>2019-08-20 12:43:59 +0000
commit9920f20e4c7753bc17bea71dea3a90f7de687196 (patch)
tree6a3d0258c10a8ccb1d85949ddafdeb070de78121 /odoo/addons/test_testing_utilities/tests/test_methods.py
parente28d3aa4d3851d72deba08c236072d002f83216a (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/tests/test_methods.py')
-rw-r--r--odoo/addons/test_testing_utilities/tests/test_methods.py28
1 files changed, 28 insertions, 0 deletions
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])