summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api/tests/test_new_fields.py
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/test_new_api/tests/test_new_fields.py')
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py
index c27704a47d9..7aa9b3c5a74 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -1090,6 +1090,52 @@ class TestFields(TransactionCaseWithUserDemo):
with self.assertRaises(AccessError):
cat1.name
+ def test_40_real_vs_new(self):
+ """ test field access on new records vs real records. """
+ Model = self.env['test_new_api.category']
+ real_record = Model.create({'name': 'Foo'})
+ self.env.cache.invalidate()
+ new_origin = Model.new({'name': 'Bar'}, origin=real_record)
+ new_record = Model.new({'name': 'Baz'})
+
+ # non-computed non-stored field: default value
+ real_record = real_record.with_context(default_dummy='WTF')
+ new_origin = new_origin.with_context(default_dummy='WTF')
+ new_record = new_record.with_context(default_dummy='WTF')
+ self.assertEqual(real_record.dummy, 'WTF')
+ self.assertEqual(new_origin.dummy, 'WTF')
+ self.assertEqual(new_record.dummy, 'WTF')
+
+ # non-computed stored field: origin or default if no origin
+ real_record = real_record.with_context(default_color=42)
+ new_origin = new_origin.with_context(default_color=42)
+ new_record = new_record.with_context(default_color=42)
+ self.assertEqual(real_record.color, 0)
+ self.assertEqual(new_origin.color, 0)
+ self.assertEqual(new_record.color, 42)
+
+ # computed non-stored field: always computed
+ self.assertEqual(real_record.display_name, 'Foo')
+ self.assertEqual(new_origin.display_name, 'Bar')
+ self.assertEqual(new_record.display_name, 'Baz')
+
+ # computed stored field: origin or computed if no origin
+ Model = self.env['test_new_api.recursive']
+ real_record = Model.create({'name': 'Foo'})
+ new_origin = Model.new({'name': 'Bar'}, origin=real_record)
+ new_record = Model.new({'name': 'Baz'})
+ self.assertEqual(real_record.display_name, 'Foo')
+ self.assertEqual(new_origin.display_name, 'Foo')
+ self.assertEqual(new_record.display_name, 'Baz')
+
+ # computed stored field with recomputation: always computed
+ real_record.name = 'Fool'
+ new_origin.name = 'Barr'
+ new_record.name = 'Bazz'
+ self.assertEqual(real_record.display_name, 'Fool')
+ self.assertEqual(new_origin.display_name, 'Barr')
+ self.assertEqual(new_record.display_name, 'Bazz')
+
def test_40_new_defaults(self):
""" Test new records with defaults. """
user = self.env.user