[IMP] mis_builder_cash_flow: Add tests
parent
84fdda3d3a
commit
18b1857d72
|
@ -0,0 +1 @@
|
|||
from . import test_cash_flow
|
|
@ -0,0 +1,130 @@
|
|||
# Copyright 2019 Creu Blanca
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from datetime import timedelta
|
||||
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo.fields import Date
|
||||
from odoo.tools import mute_logger
|
||||
from odoo.tests.common import TransactionCase, post_install, at_install
|
||||
|
||||
|
||||
@at_install(False)
|
||||
@post_install(True)
|
||||
class TestCashFlow(TransactionCase):
|
||||
|
||||
def setUp(self):
|
||||
super().setUp()
|
||||
self.company = self.env['res.company'].create({
|
||||
'name': 'TEST'
|
||||
})
|
||||
self.report = self.browse_ref(
|
||||
'mis_builder_cash_flow.mis_instance_cash_flow')
|
||||
self.report.company_id = self.company
|
||||
self.bank_account = self.env['account.account'].create({
|
||||
"company_id": self.company.id,
|
||||
"code": "TEST1",
|
||||
"name": "Bank account 01",
|
||||
"user_type_id": self.browse_ref(
|
||||
"account.data_account_type_liquidity"
|
||||
).id,
|
||||
})
|
||||
self.bank_account_hide = self.env['account.account'].create({
|
||||
"company_id": self.company.id,
|
||||
"code": "TEST2",
|
||||
"name": "Bank account 02",
|
||||
"user_type_id": self.browse_ref(
|
||||
"account.data_account_type_liquidity"
|
||||
).id,
|
||||
"hide_in_cash_flow": True,
|
||||
})
|
||||
self.account = self.env['account.account'].create({
|
||||
"company_id": self.company.id,
|
||||
"code": "TEST3",
|
||||
"name": "Account",
|
||||
"user_type_id": self.browse_ref(
|
||||
"account.data_account_type_receivable"
|
||||
).id,
|
||||
"reconcile": True,
|
||||
})
|
||||
self.journal = self.env["account.journal"].create({
|
||||
"name": "Journal",
|
||||
"code": "JOURNAL",
|
||||
"company_id": self.company.id,
|
||||
"type": "general",
|
||||
})
|
||||
|
||||
def test_company_constrain(self):
|
||||
with self.assertRaises(ValidationError):
|
||||
self.env['mis.cash_flow.forecast_line'].create({
|
||||
'account_id': self.account.id,
|
||||
'date': Date.today(),
|
||||
'balance': 1000,
|
||||
})
|
||||
|
||||
def test_report_instance(self):
|
||||
self.check_matrix()
|
||||
move = self.env['account.move'].create({
|
||||
'name': 'Move',
|
||||
'journal_id': self.journal.id,
|
||||
'company_id': self.company.id,
|
||||
'line_ids': [(0, 0, {
|
||||
'account_id': self.bank_account.id,
|
||||
'debit': 1500,
|
||||
'credit': 0,
|
||||
'company_id': self.company.id,
|
||||
}), (0, 0, {
|
||||
'account_id': self.bank_account_hide.id,
|
||||
'debit': 500,
|
||||
'credit': 0,
|
||||
'company_id': self.company.id,
|
||||
}), (0, 0, {
|
||||
'account_id': self.account.id,
|
||||
'debit': 0,
|
||||
'credit': 2000,
|
||||
'company_id': self.company.id,
|
||||
})]
|
||||
})
|
||||
move.post()
|
||||
self.check_matrix(args=[
|
||||
('liquidity', 'Current', 1500),
|
||||
('balance', 'Current', 1500),
|
||||
('in_receivable', 'Current', -2000),
|
||||
], ignore_rows=['balance', 'period_balance', 'in_total'],
|
||||
)
|
||||
date = Date.from_string(Date.today()) + timedelta(weeks=8)
|
||||
self.env['mis.cash_flow.forecast_line'].create({
|
||||
'account_id': self.account.id,
|
||||
'date': Date.to_string(date),
|
||||
'balance': 1000,
|
||||
'company_id': self.company.id,
|
||||
})
|
||||
self.check_matrix([
|
||||
('liquidity', 'Current', 1500),
|
||||
('balance', 'Current', 1500),
|
||||
('in_receivable', 'Current', -2000),
|
||||
('in_forecast', '+8w', 1000),
|
||||
], ignore_rows=['balance', 'period_balance', 'in_total'])
|
||||
|
||||
def check_matrix(self, args=False, ignore_rows=False):
|
||||
if not args:
|
||||
args = []
|
||||
if not ignore_rows:
|
||||
ignore_rows = []
|
||||
with mute_logger('odoo.addons.mis_builder.models.kpimatrix'):
|
||||
matrix = self.report._compute_matrix()
|
||||
for row in matrix.iter_rows():
|
||||
if row.kpi.name in ignore_rows:
|
||||
continue
|
||||
for cell in row.iter_cells():
|
||||
if not cell:
|
||||
continue
|
||||
found = False
|
||||
label = cell.subcol.col.label
|
||||
for exp in args:
|
||||
if exp[0] == row.kpi.name and exp[1] == label:
|
||||
found = True
|
||||
self.assertEqual(cell.val, exp[2])
|
||||
break
|
||||
if not found:
|
||||
self.assertEqual(cell.val, 0)
|
Loading…
Reference in New Issue