diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/account/tests/test_templates_consistency.py | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/account/tests/test_templates_consistency.py')
| -rw-r--r-- | addons/account/tests/test_templates_consistency.py | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/addons/account/tests/test_templates_consistency.py b/addons/account/tests/test_templates_consistency.py new file mode 100644 index 00000000..ba6ec81d --- /dev/null +++ b/addons/account/tests/test_templates_consistency.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +from odoo.tests.common import TransactionCase + + +class AccountingTestTemplConsistency(TransactionCase): + '''Test the templates consistency between some objects like account.account when account.account.template. + ''' + + def check_fields_consistency(self, model_from, model_to, exceptions=[]): + '''Check the consistency of fields from one model to another by comparing if all fields + in the model_from are present in the model_to. + :param model_from: The model to compare. + :param model_to: The compared model. + :param exceptions: Not copied model's fields. + ''' + + def get_fields(model, extra_domain=None): + # Retrieve fields to compare + domain = [('model', '=', model), ('state', '=', 'base'), ('related', '=', False), + ('compute', '=', False), ('store', '=', True)] + if extra_domain: + domain += extra_domain + return self.env['ir.model.fields'].search(domain) + + from_fields = get_fields(model_from, extra_domain=[('name', 'not in', exceptions)]) + to_fields_set = set([f.name for f in get_fields(model_to)]) + for field in from_fields: + assert field.name in to_fields_set,\ + 'Missing field "%s" from "%s" in model "%s".' % (field.name, model_from, model_to) + + def test_account_account_fields(self): + '''Test fields consistency for ('account.account', 'account.account.template') + ''' + self.check_fields_consistency( + 'account.account.template', 'account.account', exceptions=['chart_template_id', 'nocreate']) + self.check_fields_consistency( + 'account.account', 'account.account.template', exceptions=['company_id', 'deprecated', 'opening_debit', 'opening_credit', 'allowed_journal_ids', 'group_id', 'root_id', 'is_off_balance']) + + def test_account_tax_fields(self): + '''Test fields consistency for ('account.tax', 'account.tax.template') + ''' + self.check_fields_consistency('account.tax.template', 'account.tax', exceptions=['chart_template_id']) + self.check_fields_consistency('account.tax', 'account.tax.template', exceptions=['company_id']) + self.check_fields_consistency('account.tax.repartition.line.template', 'account.tax.repartition.line', exceptions=['plus_report_line_ids', 'minus_report_line_ids']) + self.check_fields_consistency('account.tax.repartition.line', 'account.tax.repartition.line.template', exceptions=['tag_ids', 'country_id', 'company_id', 'sequence']) + + def test_fiscal_position_fields(self): + '''Test fields consistency for ('account.fiscal.position', 'account.fiscal.position.template') + ''' + #main + self.check_fields_consistency('account.fiscal.position.template', 'account.fiscal.position', exceptions=['chart_template_id']) + self.check_fields_consistency('account.fiscal.position', 'account.fiscal.position.template', exceptions=['active', 'company_id', 'states_count']) + #taxes + self.check_fields_consistency('account.fiscal.position.tax.template', 'account.fiscal.position.tax') + self.check_fields_consistency('account.fiscal.position.tax', 'account.fiscal.position.tax.template') + #accounts + self.check_fields_consistency('account.fiscal.position.account.template', 'account.fiscal.position.account') + self.check_fields_consistency('account.fiscal.position.account', 'account.fiscal.position.account.template') + + def test_reconcile_model_fields(self): + '''Test fields consistency for ('account.reconcile.model', 'account.reconcile.model.template') + ''' + self.check_fields_consistency('account.reconcile.model.template', 'account.reconcile.model', exceptions=['chart_template_id']) + self.check_fields_consistency('account.reconcile.model', 'account.reconcile.model.template', exceptions=['active', 'company_id', 'past_months_limit', 'partner_mapping_line_ids']) + # lines + self.check_fields_consistency('account.reconcile.model.line.template', 'account.reconcile.model.line', exceptions=['chart_template_id']) + self.check_fields_consistency('account.reconcile.model.line', 'account.reconcile.model.line.template', exceptions=['company_id', 'journal_id', 'analytic_account_id', 'analytic_tag_ids', 'amount']) + + def test_account_group_fields(self): + '''Test fields consistency for ('account.group', 'account.group.template') + ''' + self.check_fields_consistency('account.group', 'account.group.template', exceptions=['company_id', 'parent_path']) + self.check_fields_consistency('account.group.template', 'account.group', exceptions=['chart_template_id']) |
