From 03b380c165755c3c0d5c11e1ddbc3b6dd4155ae3 Mon Sep 17 00:00:00 2001 From: Jairo Llopis Date: Wed, 27 Mar 2024 13:07:59 +0000 Subject: [PATCH] [FIX] base_vat_optional_vies: change dependency This module required `vatnumber` just to make sure upstream odoo behaved as expected. However, upstream changed to using `stdnum` in https://github.com/odoo/odoo/commit/c377e46da1a99fae928269fcf95317a8ca4e88f6, so that's what we should require here now. Besides, tests were bringing false positives and negatives. Now they test the correct behavior. @moduon MT-5599 --- base_vat_optional_vies/__manifest__.py | 2 +- base_vat_optional_vies/models/res_partner.py | 2 +- .../tests/test_res_partner.py | 32 +++++++++++-------- requirements.txt | 2 +- 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/base_vat_optional_vies/__manifest__.py b/base_vat_optional_vies/__manifest__.py index 9f07ff52f..3201f0734 100644 --- a/base_vat_optional_vies/__manifest__.py +++ b/base_vat_optional_vies/__manifest__.py @@ -11,7 +11,7 @@ 'base_vat', ], 'external_dependencies': { - 'python': ['vatnumber'], + 'python': ['stdnum'], }, 'data': [ 'views/res_partner_view.xml', diff --git a/base_vat_optional_vies/models/res_partner.py b/base_vat_optional_vies/models/res_partner.py index 7e1800d13..fb15d0361 100644 --- a/base_vat_optional_vies/models/res_partner.py +++ b/base_vat_optional_vies/models/res_partner.py @@ -34,7 +34,7 @@ class ResPartner(models.Model): return self.simple_vat_check(country_code, vat_number) return res - @api.constrains('vat') + @api.constrains("vat", "country_id") def check_vat(self): for partner in self: partner = partner.with_context(vat_partner=partner) diff --git a/base_vat_optional_vies/tests/test_res_partner.py b/base_vat_optional_vies/tests/test_res_partner.py index 09430fafb..b12a8f593 100644 --- a/base_vat_optional_vies/tests/test_res_partner.py +++ b/base_vat_optional_vies/tests/test_res_partner.py @@ -4,6 +4,9 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). import mock from odoo.tests import common +from odoo.tools import mute_logger + +MOCK_PATH = "odoo.addons.base_vat.models.res_partner.check_vies" class TestResPartner(common.TransactionCase): @@ -11,27 +14,28 @@ class TestResPartner(common.TransactionCase): super(TestResPartner, self).setUp() self.company = self.env.user.company_id self.company.vat_check_vies = True - self.partner = self.env['res.partner'].create({ - 'name': 'Test partner', - }) - self.vatnumber_path = ( - 'odoo.addons.base_vat.models.res_partner.vatnumber' + self.partner = self.env["res.partner"].create( + { + "name": "Test partner", + "country_id": self.ref("base.es"), + } ) def test_validate_vat_vies(self): - with mock.patch(self.vatnumber_path) as mock_vatnumber: - mock_vatnumber.check_vies.return_value = True - self.partner.vat = 'ESB87530432' + with mock.patch(MOCK_PATH, return_value={"valid": True}) as mocker: + self.partner.write({"vat": "ESB87530432"}) self.assertEqual(self.partner.vies_passed, True) + mocker.assert_called_once_with("ESB87530432") + @mute_logger("odoo.addons.base_vat.models.res_partner") def test_exception_vat_vies(self): - with mock.patch(self.vatnumber_path) as mock_vatnumber: - mock_vatnumber.check_vies.side_effect = Exception() - self.partner.vat = 'ESB87530432' + with mock.patch(MOCK_PATH, side_effect=Exception) as mocker: + self.partner.write({"vat": "ESB87530432"}) self.assertEqual(self.partner.vies_passed, False) + mocker.assert_called_once_with("ESB87530432") def test_no_validate_vat(self): - with mock.patch(self.vatnumber_path) as mock_vatnumber: - mock_vatnumber.check_vies.return_value = False - self.partner.vat = 'ESB87530432' + with mock.patch(MOCK_PATH, return_value={"valid": False}) as mocker: + self.partner.write({"vat": "ESB87530432"}) self.assertEqual(self.partner.vies_passed, False) + mocker.assert_called_once_with("ESB87530432") diff --git a/requirements.txt b/requirements.txt index 3320bd2c3..f5eee12e2 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ # generated from manifests external_dependencies numpy -vatnumber +python-stdnum