summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Torres <adt@odoo.com>2019-07-10 08:51:39 +0000
committerAdrian Torres <adt@odoo.com>2019-07-10 08:58:27 +0000
commit46d12675a7273d2a4e513644016e9a06e9d7ae64 (patch)
tree7bceb21e2f1edb5617bdc10efe95ec1c319050da
parentddada7bb9e0bbe8d0a3ef6194b372451a1c71ab7 (diff)
[FIX] tests: allow False as value for required booleans in SSF
A required boolean accepts two values, True and False, however the SSF and the web-client assume False to be equal to NULL and treat them interchangeably. In the SSF, we verify that a required field is filled by checking that its value is different from False, however False is a valid value for a boolean, this means that setting a required boolean to False would never work in the SSF. This commit overcomes this issue by simply skipping the check for fields of type boolean. closes odoo/odoo#34729 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
-rw-r--r--odoo/addons/test_testing_utilities/ir.model.access.csv1
-rw-r--r--odoo/addons/test_testing_utilities/models.py5
-rw-r--r--odoo/addons/test_testing_utilities/tests/test_form_impl.py10
-rw-r--r--odoo/tests/common.py2
4 files changed, 17 insertions, 1 deletions
diff --git a/odoo/addons/test_testing_utilities/ir.model.access.csv b/odoo/addons/test_testing_utilities/ir.model.access.csv
index c43b736c531..1cb9a9f542a 100644
--- a/odoo/addons/test_testing_utilities/ir.model.access.csv
+++ b/odoo/addons/test_testing_utilities/ir.model.access.csv
@@ -19,3 +19,4 @@ access_model_test_testing_utilities_onchange_count,access_model_test_testing_uti
access_test_testing_utilities_onchange_count_sub,access_test_testing_utilities_onchange_count_sub,model_test_testing_utilities_onchange_count_sub,,1,1,1,1
access_o2m_readonly_subfield_parent,access_o2m_readonly_subfield_parent,model_o2m_readonly_subfield_parent,,1,1,1,1
access_o2m_readonly_subfield_child,access_o2m_readonly_subfield_child,model_o2m_readonly_subfield_child,,1,1,1,1
+access_test_testing_utilities_req_bool,access_test_testing_utilities_req_bool,model_test_testing_utilities_req_bool,,1,0,0,0
diff --git a/odoo/addons/test_testing_utilities/models.py b/odoo/addons/test_testing_utilities/models.py
index 0c04bc06e8d..0b87c3e66b1 100644
--- a/odoo/addons/test_testing_utilities/models.py
+++ b/odoo/addons/test_testing_utilities/models.py
@@ -261,3 +261,8 @@ class O2MReadonlySubfieldChild(models.Model):
def _inverse_f(self):
raise AssertionError("Inverse of f should not be called")
+
+class ReqBool(models.Model):
+ _name = _description = 'test_testing_utilities.req_bool'
+
+ f_bool = fields.Boolean(required=True)
diff --git a/odoo/addons/test_testing_utilities/tests/test_form_impl.py b/odoo/addons/test_testing_utilities/tests/test_form_impl.py
index 0191a4da7ad..c0e5093fd3b 100644
--- a/odoo/addons/test_testing_utilities/tests/test_form_impl.py
+++ b/odoo/addons/test_testing_utilities/tests/test_form_impl.py
@@ -53,6 +53,16 @@ class TestBasic(TransactionCase):
('1', 0, 0, 0)
)
+ def test_required_bool(self):
+ f = Form(self.env['test_testing_utilities.req_bool'])
+ f.f_bool = False
+ r = f.save()
+ self.assertEqual(r.f_bool, 0)
+
+ f2 = Form(self.env['test_testing_utilities.req_bool'])
+ r2 = f2.save()
+ self.assertEqual(r2.f_bool, 0)
+
def test_readonly(self):
"""
Checks that fields with readonly modifiers (marked as readonly or
diff --git a/odoo/tests/common.py b/odoo/tests/common.py
index 06906d45086..6fcd68c427c 100644
--- a/odoo/tests/common.py
+++ b/odoo/tests/common.py
@@ -1385,7 +1385,7 @@ class Form(object):
fields = self._view['fields']
for f in fields:
v = self._values[f]
- if self._get_modifier(f, 'required'):
+ if self._get_modifier(f, 'required') and not fields[f]['type'] == 'boolean':
assert v is not False, "{} is a required field".format(f)
# skip unmodified fields