[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)
This commit is contained in:
Ronald Portier
2020-08-21 12:09:22 +02:00
committed by ntsirintanis
parent 5f08203852
commit 748345c0b2
4 changed files with 41 additions and 23 deletions

View File

@@ -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):