summaryrefslogtreecommitdiff
path: root/addons/base_sparse_field/tests
diff options
context:
space:
mode:
Diffstat (limited to 'addons/base_sparse_field/tests')
-rw-r--r--addons/base_sparse_field/tests/__init__.py3
-rw-r--r--addons/base_sparse_field/tests/test_sparse_fields.py40
2 files changed, 43 insertions, 0 deletions
diff --git a/addons/base_sparse_field/tests/__init__.py b/addons/base_sparse_field/tests/__init__.py
new file mode 100644
index 00000000..1dc57053
--- /dev/null
+++ b/addons/base_sparse_field/tests/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import test_sparse_fields
diff --git a/addons/base_sparse_field/tests/test_sparse_fields.py b/addons/base_sparse_field/tests/test_sparse_fields.py
new file mode 100644
index 00000000..7c7e8264
--- /dev/null
+++ b/addons/base_sparse_field/tests/test_sparse_fields.py
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+
+from odoo.tests import common
+
+
+class TestSparseFields(common.TransactionCase):
+
+ def test_sparse(self):
+ """ test sparse fields. """
+ record = self.env['sparse_fields.test'].create({})
+ self.assertFalse(record.data)
+
+ partner = self.env.ref('base.main_partner')
+ values = [
+ ('boolean', True),
+ ('integer', 42),
+ ('float', 3.14),
+ ('char', 'John'),
+ ('selection', 'two'),
+ ('partner', partner.id),
+ ]
+ for n, (key, val) in enumerate(values):
+ record.write({key: val})
+ self.assertEqual(record.data, dict(values[:n+1]))
+
+ for key, val in values[:-1]:
+ self.assertEqual(record[key], val)
+ self.assertEqual(record.partner, partner)
+
+ for n, (key, val) in enumerate(values):
+ record.write({key: False})
+ self.assertEqual(record.data, dict(values[n+1:]))
+
+ # check reflection of sparse fields in 'ir.model.fields'
+ names = [name for name, _ in values]
+ domain = [('model', '=', 'sparse_fields.test'), ('name', 'in', names)]
+ fields = self.env['ir.model.fields'].search(domain)
+ self.assertEqual(len(fields), len(names))
+ for field in fields:
+ self.assertEqual(field.serialization_field_id.name, 'data')