diff options
Diffstat (limited to 'odoo/addons/test_new_api/tests/test_onchange.py')
| -rw-r--r-- | odoo/addons/test_new_api/tests/test_onchange.py | 44 |
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}, + ]) |
