summaryrefslogtreecommitdiff
path: root/addons/account/tests/test_templates_consistency.py
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/account/tests/test_templates_consistency.py
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/account/tests/test_templates_consistency.py')
-rw-r--r--addons/account/tests/test_templates_consistency.py73
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'])