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