74 lines
2.8 KiB
Python
74 lines
2.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
import logging
|
|
|
|
from odoo.tests import standalone
|
|
from odoo.addons.account.models.chart_template import AccountChartTemplate
|
|
from unittest.mock import patch
|
|
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
@standalone('all_l10n')
|
|
def test_all_l10n(env):
|
|
""" This test will install all the l10n_* modules.
|
|
As the module install is not yet fully transactional, the modules will
|
|
remain installed after the test.
|
|
"""
|
|
|
|
try_loading = type(env['account.chart.template']).try_loading
|
|
|
|
def try_loading_patch(self, template_code, company, install_demo=True):
|
|
self = self.with_context(l10n_check_fields_complete=True)
|
|
return try_loading(self, template_code, company, install_demo)
|
|
|
|
|
|
# Ensure the presence of demo data, to see if they can be correctly installed
|
|
assert env.ref('base.module_account').demo, "Need the demo to test with data"
|
|
|
|
# Install the requiriments
|
|
l10n_mods = env['ir.module.module'].search([
|
|
('name', '=like', 'l10n_%'),
|
|
('state', '=', 'uninstalled'),
|
|
'!', ('name', '=like', 'l10n_hk_hr%'), #failling for obscure reason
|
|
])
|
|
with patch.object(AccountChartTemplate, 'try_loading', try_loading_patch):
|
|
l10n_mods.button_immediate_install()
|
|
|
|
# In all_l10n tests we need to verify demo data
|
|
demo_failures = env['ir.demo_failure'].search([])
|
|
if demo_failures:
|
|
_logger.warning("Error while testing demo data for all_l10n tests.")
|
|
for failure in demo_failures:
|
|
_logger.warning("Demo data of module %s has failed: %s",
|
|
failure.module_id.name, failure.error)
|
|
|
|
env.reset() # clear the set of environments
|
|
env = env() # get an environment that refers to the new registry
|
|
|
|
# Install Charts of Accounts
|
|
already_loaded_codes = set(env['res.company'].search([]).mapped('chart_template'))
|
|
not_loaded_codes = [
|
|
(template_code, template)
|
|
for template_code, template in env['account.chart.template']._get_chart_template_mapping().items()
|
|
if template_code not in already_loaded_codes
|
|
]
|
|
companies = env['res.company'].create([
|
|
{
|
|
'name': f'company_coa_{template_code}',
|
|
'country_id': template['country_id'],
|
|
}
|
|
for template_code, template in not_loaded_codes
|
|
])
|
|
|
|
# Install the CoAs
|
|
for (template_code, _template), company in zip(not_loaded_codes, companies):
|
|
env.user.company_ids += company
|
|
env.user.company_id = company
|
|
_logger.info('Testing COA: %s (company: %s)', template_code, company.name)
|
|
try:
|
|
with env.cr.savepoint():
|
|
env['account.chart.template'].with_context(l10n_check_fields_complete=True).try_loading(template_code, company, install_demo=True)
|
|
except Exception:
|
|
_logger.error("Error when creating COA %s", template_code, exc_info=True)
|