Browse Source
[IMP] mis_builder: add a wide-coverage integration test
[IMP] mis_builder: add a wide-coverage integration test
This reveals a couple of bugs!pull/189/head
Stéphane Bidoul
9 years ago
5 changed files with 139 additions and 2 deletions
-
2mis_builder/models/mis_report.py
-
2mis_builder/models/mis_report_instance.py
-
3mis_builder/report/mis_report_instance_xlsx.py
-
1mis_builder/tests/__init__.py
-
131mis_builder/tests/test_mis_report_instance.py
@ -0,0 +1,131 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# © 2016 ACSONE SA/NV (<http://acsone.eu>) |
||||
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). |
||||
|
|
||||
|
import openerp.tests.common as common |
||||
|
from openerp.tools import test_reports |
||||
|
|
||||
|
|
||||
|
class TestMisReportInstance(common.TransactionCase): |
||||
|
""" Basic integration test to exercise mis.report.instance. |
||||
|
|
||||
|
We don't check the actual results here too much as computation correctness |
||||
|
should be covered by lower level unit tests. |
||||
|
""" |
||||
|
|
||||
|
def setUp(self): |
||||
|
super(TestMisReportInstance, self).setUp() |
||||
|
partner_model_id = \ |
||||
|
self.env.ref('base.model_res_partner').id |
||||
|
partner_create_date_field_id = \ |
||||
|
self.env.ref('base.field_res_partner_create_date').id |
||||
|
partner_debit_field_id = \ |
||||
|
self.env.ref('account.field_res_partner_debit').id |
||||
|
# create a report with 2 subkpis and one query |
||||
|
self.report = self.env['mis.report'].create(dict( |
||||
|
name='test report', |
||||
|
subkpi_ids=[(0, 0, dict( |
||||
|
name='sk1', |
||||
|
description='subkpi 1', |
||||
|
sequence=1, |
||||
|
)), (0, 0, dict( |
||||
|
name='sk2', |
||||
|
description='subkpi 2', |
||||
|
sequence=2, |
||||
|
)), |
||||
|
], |
||||
|
query_ids=[(0, 0, dict( |
||||
|
name='partner', |
||||
|
model_id=partner_model_id, |
||||
|
field_ids=[(4, partner_debit_field_id, None)], |
||||
|
date_field=partner_create_date_field_id, |
||||
|
aggregate='sum', |
||||
|
)), |
||||
|
], |
||||
|
)) |
||||
|
# kpi with accounting formulas |
||||
|
self.env['mis.report.kpi'].create(dict( |
||||
|
report_id=self.report.id, |
||||
|
description='kpi 1', |
||||
|
name='k1', |
||||
|
multi=True, |
||||
|
expression_ids=[(0, 0, dict( |
||||
|
name='bale[200%]', |
||||
|
subkpi_id=self.report.subkpi_ids[0].id, |
||||
|
)), (0, 0, dict( |
||||
|
name='balp[200%]', |
||||
|
subkpi_id=self.report.subkpi_ids[1].id, |
||||
|
)), |
||||
|
], |
||||
|
)) |
||||
|
# kpi with accounting formula and query |
||||
|
self.env['mis.report.kpi'].create(dict( |
||||
|
report_id=self.report.id, |
||||
|
description='kpi 2', |
||||
|
name='k2', |
||||
|
multi=True, |
||||
|
expression_ids=[(0, 0, dict( |
||||
|
name='balp[200%]', |
||||
|
subkpi_id=self.report.subkpi_ids[0].id, |
||||
|
)), (0, 0, dict( |
||||
|
name='partner.debit', |
||||
|
subkpi_id=self.report.subkpi_ids[1].id, |
||||
|
)), |
||||
|
], |
||||
|
)) |
||||
|
# kpi with 2 constants |
||||
|
self.env['mis.report.kpi'].create(dict( |
||||
|
report_id=self.report.id, |
||||
|
description='kpi 3', |
||||
|
name='k3', |
||||
|
multi=True, |
||||
|
expression_ids=[(0, 0, dict( |
||||
|
name='AccountingNone', |
||||
|
subkpi_id=self.report.subkpi_ids[0].id, |
||||
|
)), (0, 0, dict( |
||||
|
name='1.0', |
||||
|
subkpi_id=self.report.subkpi_ids[1].id, |
||||
|
)), |
||||
|
], |
||||
|
)) |
||||
|
# kpi with a simple expression summing other multi-valued kpis |
||||
|
self.env['mis.report.kpi'].create(dict( |
||||
|
report_id=self.report.id, |
||||
|
description='kpi 4', |
||||
|
name='k4', |
||||
|
multi=False, |
||||
|
expression='k1 + k2 + k3', |
||||
|
)) |
||||
|
# create a report instance |
||||
|
self.report_instance = self.env['mis.report.instance'].create(dict( |
||||
|
name='test instance', |
||||
|
report_id=self.report.id, |
||||
|
company_id=self.env.ref('base.main_company').id, |
||||
|
period_ids=[(0, 0, dict( |
||||
|
name='p1', |
||||
|
mode='relative', |
||||
|
type='d', |
||||
|
subkpi_ids=[(4, self.report.subkpi_ids[0].id, None)], |
||||
|
)), (0, 0, dict( |
||||
|
name='p2', |
||||
|
mode='fix', |
||||
|
manual_date_from='2014-01-01', |
||||
|
manual_date_to='2014-12-31', |
||||
|
)), |
||||
|
], |
||||
|
)) |
||||
|
|
||||
|
def test_json(self): |
||||
|
self.report_instance.compute() |
||||
|
|
||||
|
def test_qweb(self): |
||||
|
test_reports.try_report(self.env.cr, self.env.uid, |
||||
|
'mis_builder.report_mis_report_instance', |
||||
|
[self.report_instance.id], |
||||
|
report_type='qweb-pdf') |
||||
|
|
||||
|
def test_xlsx(self): |
||||
|
test_reports.try_report(self.env.cr, self.env.uid, |
||||
|
'mis.report.instance.xlsx', |
||||
|
[self.report_instance.id], |
||||
|
report_type='xlsx') |
Write
Preview
Loading…
Cancel
Save
Reference in new issue