diff --git a/addons/account/tests/common.py b/addons/account/tests/common.py index 815d25feb62..1ddb8f77f52 100644 --- a/addons/account/tests/common.py +++ b/addons/account/tests/common.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from odoo import fields, Command -from odoo.tests.common import TransactionCase, HttpCase, tagged, Form +from odoo.tests.common import TransactionCase, HttpCase, Form import json import time @@ -10,6 +10,24 @@ from lxml import etree from unittest import SkipTest +def instantiate_accountman(cls): + cls.user = cls.env['res.users'].create({ + 'name': 'Because I am accountman!', + 'login': 'accountman', + 'password': 'accountman', + 'groups_id': [ + Command.set(cls.env.user.groups_id.ids), + Command.link(cls.env.ref('account.group_account_manager').id), + Command.link(cls.env.ref('account.group_account_user').id), + ], + }) + cls.user.partner_id.email = 'accountman@test.com' + + # Shadow the current environment/cursor with one having the report user. + # This is mandatory to test access rights. + cls.env = cls.env(user=cls.user) + cls.cr = cls.env.cr + class AccountTestInvoicingCommon(TransactionCase): @classmethod @@ -28,7 +46,8 @@ class AccountTestInvoicingCommon(TransactionCase): @classmethod def setUpClass(cls, chart_template_ref=None): - super(AccountTestInvoicingCommon, cls).setUpClass() + super().setUpClass() + instantiate_accountman(cls) assert 'post_install' in cls.test_tags, 'This test requires a CoA to be installed, it should be tagged "post_install"' @@ -38,28 +57,10 @@ class AccountTestInvoicingCommon(TransactionCase): if template_module.state != 'installed': raise SkipTest(f"Module required for the test is not installed ({template_module.name})") - # Create user. - user = cls.env['res.users'].create({ - 'name': 'Because I am accountman!', - 'login': 'accountman', - 'password': 'accountman', - 'groups_id': [ - (6, 0, cls.env.user.groups_id.ids), - (4, cls.env.ref('account.group_account_manager').id), - (4, cls.env.ref('account.group_account_user').id), - ], - }) - user.partner_id.email = 'accountman@test.com' - - # Shadow the current environment/cursor with one having the report user. - # This is mandatory to test access rights. - cls.env = cls.env(user=user) - cls.cr = cls.env.cr - cls.company_data_2 = cls.setup_company_data('company_2_data', chart_template=chart_template_ref) cls.company_data = cls.setup_company_data('company_1_data', chart_template=chart_template_ref) - user.write({ + cls.user.write({ 'company_ids': [Command.set((cls.company_data['company'] + cls.company_data_2['company']).ids)], 'company_id': cls.company_data['company'].id, }) diff --git a/addons/account/tests/test_chart_template.py b/addons/account/tests/test_chart_template.py index 5a48300cdff..198178e7192 100644 --- a/addons/account/tests/test_chart_template.py +++ b/addons/account/tests/test_chart_template.py @@ -2,6 +2,7 @@ from unittest.mock import patch from odoo import Command from odoo.addons.account.models.chart_template import AccountChartTemplate +from odoo.addons.account.tests.common import instantiate_accountman from odoo.tests import tagged from odoo.tests.common import TransactionCase @@ -104,25 +105,14 @@ class TestChartTemplate(TransactionCase): We need to add xml_ids to the templates because they are loaded from their xml_ids """ super().setUpClass() - - # Create user. - user = cls.env['res.users'].create({ - 'name': 'Because I am accountman!', - 'login': 'accountman', - 'password': 'accountman', - 'groups_id': [Command.set(cls.env.user.groups_id.ids), Command.link(cls.env.ref('account.group_account_user').id)], - }) - user.partner_id.email = 'accountman@test.com' + instantiate_accountman(cls) cls.company_1 = cls.env['res.company'].create({ 'name': 'TestCompany1', 'country_id': cls.env.ref('base.be').id, }) - cls.env = cls.env(user=user) - cls.cr = cls.env.cr - - user.write({ + cls.user.write({ 'company_ids': [Command.set(cls.company_1.ids)], 'company_id': cls.company_1.id, })