1
0
forked from Mapan/odoo17e
odoo17e-kedaikipas58/addons/account_avatax/tests/test_address_validation.py
2024-12-10 09:04:09 +07:00

70 lines
3.0 KiB
Python

from odoo.tests.common import tagged
from .common import TestAvataxCommon
from .mocked_address_validation_response import response as address_validation_response
from odoo.exceptions import ValidationError
class TestAccountAvalaraAddressValidationCommon(TestAvataxCommon):
"""https://developer.avalara.com/certification/avatax/address-validation-badge/"""
@classmethod
def setUpClass(cls):
res = super().setUpClass()
cls.country_us = cls.env['res.country'].search([('code', '=', 'US')])
cls.country_not_us = cls.env['res.country'].search([('code', '=', 'BE')])
cls.env.company.avalara_address_validation = True
return res
def _create_partner(self):
return self.env['res.partner'].create({
'name': 'Odoo Inc',
'street': '250 executiv prk blvd',
'street2': '3400',
'city': '',
'zip': '94134',
'country_id': self.country_us.id,
})
def _test_address_validation_flow(self):
partner = self._create_partner()
wizard = self.env['avatax.validate.address'].create({'partner_id': partner.id})
wizard.action_save_validated()
self.assertEqual(partner.name, 'Odoo Inc', 'The name should not have changed.')
self.assertEqual(partner.street, '250 Executive Park Blvd Ste 3400', 'The validated address is incorrect.')
self.assertEqual(partner.street2, '', 'The validated address is incorrect.')
self.assertEqual(partner.city, 'San Francisco', 'The validated address is incorrect.')
self.assertEqual(partner.zip, '94134-3349', 'The validated address is incorrect.')
@tagged("-at_install", "post_install")
class TestAccountAvalaraAddressValidation(TestAccountAvalaraAddressValidationCommon):
def test_address_validation_wizard(self):
with self._capture_request(return_value=address_validation_response):
self._test_address_validation_flow()
def test_address_validation_NA_only(self):
"""Avalara Address Validation endpoint only works with US and Canadian Addresses.
Do not call the service for other countries.
"""
partner = self._create_partner()
partner.country_id = self.country_not_us
with self.assertRaises(ValidationError):
wizard = self.env['avatax.validate.address'].create({'partner_id': partner.id})
wizard._compute_validated_address()
def test_auto_apply_fp_on_payment(self):
self.partner.zip = False
self.fp_avatax.auto_apply = True
self.fp_avatax.state_ids = self.partner.state_id
# ensure this doesn't raise ValidationError from _check_address
self.env["account.payment"].create({"partner_id": self.partner.id})
@tagged("-standard", "external")
class TestAccountAvalaraAddressValidationExternal(TestAccountAvalaraAddressValidationCommon):
def test_integration_address_validation_wizard(self):
with self._skip_no_credentials():
self._test_address_validation_flow()