diff options
| author | Adrian Torres <adt@odoo.com> | 2019-07-10 08:51:39 +0000 |
|---|---|---|
| committer | Adrian Torres <adt@odoo.com> | 2019-07-10 08:58:27 +0000 |
| commit | 46d12675a7273d2a4e513644016e9a06e9d7ae64 (patch) | |
| tree | 7bceb21e2f1edb5617bdc10efe95ec1c319050da | |
| parent | ddada7bb9e0bbe8d0a3ef6194b372451a1c71ab7 (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.csv | 1 | ||||
| -rw-r--r-- | odoo/addons/test_testing_utilities/models.py | 5 | ||||
| -rw-r--r-- | odoo/addons/test_testing_utilities/tests/test_form_impl.py | 10 | ||||
| -rw-r--r-- | odoo/tests/common.py | 2 |
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 |
