Files
public/rsbu_chart_of_accounts/tests/test_rsbu_account.py

78 lines
3.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from odoo.tests import TransactionCase, tagged
from odoo.exceptions import ValidationError, UserError
from psycopg2 import IntegrityError
from odoo.tools import mute_logger
@tagged('post_install', '-at_install')
class TestRsbuAccount(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.Account = cls.env['rsbu.account']
cls.company = cls.env.company
cls.company2 = cls.env['res.company'].create({'name': 'RSBU Co2'})
def _make(self, code, name='Счёт', kind='active', parent=None, **kw):
vals = {'code': code, 'name': name, 'account_kind': kind}
if parent:
vals['parent_id'] = parent.id
vals.update(kw)
return self.Account.create(vals)
def test_code_unique_per_company(self):
self._make('T01')
with self.assertRaises(IntegrityError), mute_logger('odoo.sql_db'):
self._make('T01')
def test_code_reused_across_companies(self):
a = self._make('T02')
b = self._make('T02', company_id=self.company2.id)
self.assertNotEqual(a.id, b.id)
def test_no_cycle(self):
a = self._make('T10')
b = self._make('T11', parent=a)
# Рекурсию ловит ядро parent_store (UserError "Recursion Detected")
# ещё до нашего @api.constrains.
with self.assertRaises(UserError):
a.parent_id = b.id
a.flush_recordset()
def test_unlink_with_children_forbidden(self):
a = self._make('T20')
self._make('T21', parent=a)
with self.assertRaises(ValidationError):
a.unlink()
def test_required_subconto(self):
a = self._make('T30', subconto_partner=True, subconto_employee=True)
self.assertEqual(set(a.get_required_subconto()), {'partner', 'employee'})
def test_aggregation_zero_without_postings(self):
a = self._make('T40')
bal = a.get_balance()
self.assertEqual(bal['debit'], 0.0)
self.assertEqual(bal['credit'], 0.0)
self.assertEqual(bal['balance'], 0.0)
def test_subtree_ids(self):
a = self._make('T50', is_group=True)
b = self._make('T50.1', parent=a)
c = self._make('T50.2', parent=a)
ids = a._get_subtree_account_ids()
self.assertIn(a.id, ids)
self.assertIn(b.id, ids)
self.assertIn(c.id, ids)
def test_chart_loaded_for_company(self):
# post_init_hook должен был загрузить типовой план для компании.
acc51 = self.Account.search([
('code', '=', '51'), ('company_id', '=', self.company.id)])
self.assertTrue(acc51, 'Счёт 51 должен быть загружен из типового плана')
acc62av = self.Account.search([
('code', '=', '62.АВ'), ('company_id', '=', self.company.id)])
self.assertTrue(acc62av, 'Субсчёт 62.АВ должен быть загружен')
self.assertEqual(acc62av.parent_id.code, '62')