From d15dbcac86f9879bb3af9a78fd24d884c7d317df Mon Sep 17 00:00:00 2001 From: Ronald Portier Date: Fri, 21 Aug 2020 12:09:22 +0200 Subject: [PATCH] [FIX] base_external_system. Solve test error. Testing fingerprint, with ignore_finger_print set to False, caused an error, because it would first set ignore_fingerprint to False, then validate, never getting to actually setting the fingerprint, causing the following stacktrace: Traceback (most recent call last): File "/home/travis/build/OCA/server-backend/base_external_system/tests/test_external_system.py", line 28, in test_check_fingerprint_allowed self.record.write({"ignore_fingerprint": False, "fingerprint": "Data"}) File "/home/travis/odoo-13.0/odoo/models.py", line 3573, in write fields[0].determine_inverse(real_recs) File "/home/travis/odoo-13.0/odoo/fields.py", line 1122, in determine_inverse self.inverse(records) File "/home/travis/odoo-13.0/odoo/fields.py", line 594, in _inverse_related target[field.name] = record_value[record] File "/home/travis/odoo-13.0/odoo/models.py", line 5629, in __setitem__ return self._fields[key].__set__(self, value) File "/home/travis/odoo-13.0/odoo/fields.py", line 1087, in __set__ records.write({self.name: write_value}) File "/home/travis/odoo-13.0/odoo/models.py", line 3568, in write real_recs._validate_fields(set(vals) - set(inverse_fields)) File "/home/travis/odoo-13.0/odoo/models.py", line 1176, in _validate_fields check(self) --- base_external_system/tests/test_external_system.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/base_external_system/tests/test_external_system.py b/base_external_system/tests/test_external_system.py index 20dee9be..ab264728 100644 --- a/base_external_system/tests/test_external_system.py +++ b/base_external_system/tests/test_external_system.py @@ -25,7 +25,10 @@ class TestExternalSystem(Common): def test_check_fingerprint_allowed(self): """It should not raise a validation error if there is a fingerprint.""" - self.record.write({"ignore_fingerprint": False, "fingerprint": "Data"}) + # In Odoo 13.0, due to the way inverse records (models inherited from) + # are handled, setting both fields at the same time causes an error. + self.record.write({"fingerprint": "Data"}) + self.record.write({"ignore_fingerprint": False}) self.assertTrue(True) def test_client(self):