forked from Mapan/odoo17e
70 lines
3.0 KiB
Python
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()
|