[FIX] spreadsheet_account: Fix test to be independent of demo data

The current test is based on demo data making the file red on runbot for nightly build when a localization is installed.
In order to deal with localizations, all tests must implement the accounting AccountTestInvoicingCommon class.

X-original-commit: 05509e63a7061e56b67015270d20f0c7089bdb6f
Part-of: odoo/odoo#104389
This commit is contained in:
Laurent Smet
2022-10-28 08:22:57 +02:00
parent 6bc685def1
commit 4a508afab9
@@ -1,79 +1,41 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo.tests.common import TransactionCase
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
from odoo.tests import tagged
class SpreadsheetAccountGroupTest(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env["account.account"].create(
{
"company_id": cls.env.user.company_id.id,
"name": "spreadsheet revenue Company 1",
"account_type": "income",
"code": "123",
}
)
cls.env["account.account"].create(
{
"company_id": cls.env.user.company_id.id,
"name": "spreadsheet expense Company 1",
"account_type": "income_other",
"code": "456",
}
)
cls.env["account.account"].create(
{
"company_id": cls.env.user.company_id.id,
"name": "spreadsheet revenue Company 2",
"account_type": "income",
"code": "789",
}
)
def _unlink_default_accounts(self, account_ids):
used_account_id = self.env["account.account"].search([("code", '=', '123')])
aml_ids = self.env["account.move.line"].search([("account_id", "in", account_ids.ids), ("company_id", "=", self.env.company.id)])
journal_ids = self.env["account.journal"].search([("default_account_id", "in", account_ids.ids), ("company_id", "=", self.env.company.id)])
for aml_id in aml_ids:
aml_id.account_id = used_account_id
for journal_id in journal_ids:
journal_id.default_account_id = used_account_id
for account_id in account_ids:
self.env["ir.property"]._set_default("property_account_income_categ_id", "product.category", used_account_id, self.env.company)
account_id.unlink()
@tagged('post_install', '-at_install')
class SpreadsheetAccountGroupTest(AccountTestInvoicingCommon):
def test_fetch_account_no_group(self):
self.assertEqual(self.env["account.account"].get_account_group([]), [])
def test_fetch_account_one_group(self):
account_ids = self.env["account.account"].search([("account_type", "=", "income_other"), ("company_id", "=", self.env.company.id), ("code", "!=", "456")])
self._unlink_default_accounts(account_ids)
self.assertEqual(
self.env["account.account"].get_account_group(["income_other"]),
[["456"]],
)
self.assertEqual(self.env["account.account"].get_account_group(['income_other']), [['450000']])
def test_group_with_no_account(self):
account_ids = self.env["account.account"].search([("account_type", "=", "income_other"), ("company_id", "=", self.env.company.id)])
self._unlink_default_accounts(account_ids)
self.assertEqual(
self.env["account.account"].get_account_group(["income_other"]), [[]]
)
self.env['account.account']\
.search([('account_type', '=', 'income_other'), ('company_id', '=', self.env.company.id)])\
.unlink()
self.assertEqual(self.env["account.account"].get_account_group(['income_other']), [[]])
def test_with_wrong_account_type_id(self):
self.assertEqual(self.env["account.account"].get_account_group([999999]), [[]])
def test_group_with_multiple_accounts(self):
account_ids = self.env["account.account"].search([("account_type", "=", "income"), ("company_id", "=", self.env.company.id), ("code", "not in", ["123", "789"])])
self._unlink_default_accounts(account_ids)
self.env['account.account'].create({
'name': "test_group_with_multiple_accounts 1",
'account_type': 'income_other',
'code': '123',
})
self.env['account.account'].create({
'name': "test_group_with_multiple_accounts 2",
'account_type': 'income_other',
'code': '789',
})
self.assertEqual(
self.env["account.account"].get_account_group(["income"]),
[["123", "789"]],
[sorted(x) for x in self.env['account.account'].get_account_group(['income_other'])],
[['123', '450000', '789']],
)
def test_response_is_ordered(self):