summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api/tests/test_onchange.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/test_new_api/tests/test_onchange.py')
-rw-r--r--odoo/addons/test_new_api/tests/test_onchange.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/odoo/addons/test_new_api/tests/test_onchange.py b/odoo/addons/test_new_api/tests/test_onchange.py
index 9ee567d777a..bc58db1dde5 100644
--- a/odoo/addons/test_new_api/tests/test_onchange.py
+++ b/odoo/addons/test_new_api/tests/test_onchange.py
@@ -823,3 +823,47 @@ class TestComputeOnchange(common.TransactionCase):
]
result = record.onchange({'line_ids': line_ids}, 'line_ids', spec)
self.assertEqual(result, expected)
+
+ def test_computed_editable_one2many_domain(self):
+ """ Test a computed, editable one2many field with a domain. """
+ record = self.env['test_new_api.one2many'].create({'name': 'foo'})
+ self.assertRecordValues(record.line_ids, [
+ {'name': 'foo', 'count': 1},
+ ])
+
+ # trigger recomputation by changing name
+ record.name = 'bar'
+ self.assertRecordValues(record.line_ids, [
+ {'name': 'foo', 'count': 1},
+ {'name': 'bar', 'count': 1},
+ ])
+
+ # manually adding a line should not trigger recomputation
+ record.line_ids.create({'name': 'baz', 'container_id': record.id})
+ self.assertRecordValues(record.line_ids, [
+ {'name': 'foo', 'count': 1},
+ {'name': 'bar', 'count': 1},
+ {'name': 'baz', 'count': 1},
+ ])
+
+ # changing the field in the domain should not trigger recomputation...
+ record.line_ids[-1].count = 2
+ self.assertRecordValues(record.line_ids, [
+ {'name': 'foo', 'count': 1},
+ {'name': 'bar', 'count': 1},
+ {'name': 'baz', 'count': 2},
+ ])
+
+ # ...and may show cache inconsistencies
+ record.line_ids[-1].count = 0
+ self.assertRecordValues(record.line_ids, [
+ {'name': 'foo', 'count': 1},
+ {'name': 'bar', 'count': 1},
+ {'name': 'baz', 'count': 0},
+ ])
+ record.flush()
+ record.invalidate_cache()
+ self.assertRecordValues(record.line_ids, [
+ {'name': 'foo', 'count': 1},
+ {'name': 'bar', 'count': 1},
+ ])