jcoux
9 years ago
6 changed files with 331 additions and 239 deletions
-
1account_financial_report_qweb/tests/__init__.py
-
202account_financial_report_qweb/tests/abstract_test.py
-
88account_financial_report_qweb/tests/test_aged_partner_balance.py
-
96account_financial_report_qweb/tests/test_general_ledger.py
-
87account_financial_report_qweb/tests/test_open_items.py
-
96account_financial_report_qweb/tests/test_trial_balance.py
@ -0,0 +1,202 @@ |
|||||
|
# -*- coding: utf-8 -*- |
||||
|
# Author: Julien Coux |
||||
|
# Copyright 2016 Camptocamp SA |
||||
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
||||
|
|
||||
|
from openerp.tests.common import TransactionCase |
||||
|
|
||||
|
|
||||
|
class AbstractTest(TransactionCase): |
||||
|
"""Common technical tests for all reports.""" |
||||
|
|
||||
|
def setUp(cls): |
||||
|
super(AbstractTest, cls).setUp() |
||||
|
|
||||
|
cls.model = cls._getReportModel() |
||||
|
|
||||
|
cls.qweb_report_name = cls._getQwebReportName() |
||||
|
cls.xlsx_report_name = cls._getXlsxReportName() |
||||
|
cls.xlsx_action_name = cls._getXlsxReportActionName() |
||||
|
|
||||
|
cls.report_title = cls._getReportTitle() |
||||
|
|
||||
|
cls.base_filters = cls._getBaseFilters() |
||||
|
cls.additional_filters = cls._getAdditionalFiltersToBeTested() |
||||
|
|
||||
|
cls.report = cls.model.create(cls.base_filters) |
||||
|
|
||||
|
def test_01_generation_report_qweb(self): |
||||
|
"""Check if report PDF/HTML is correctly generated""" |
||||
|
|
||||
|
# Check if returned report action is correct |
||||
|
report_action = self.report.print_report() |
||||
|
self.assertDictContainsSubset( |
||||
|
{ |
||||
|
'type': 'ir.actions.report.xml', |
||||
|
'report_name': self.qweb_report_name, |
||||
|
'report_type': 'qweb-pdf', |
||||
|
}, |
||||
|
report_action |
||||
|
) |
||||
|
|
||||
|
# Check if report template is correct |
||||
|
report_html = self.env['report'].get_html( |
||||
|
self.report, self.qweb_report_name |
||||
|
) |
||||
|
self.assertRegexpMatches(report_html, self.report_title) |
||||
|
self.assertRegexpMatches(report_html, self.report.account_ids[0].name) |
||||
|
|
||||
|
def test_02_generation_report_xlsx(self): |
||||
|
"""Check if report XLSX is correctly generated""" |
||||
|
|
||||
|
# Check if returned report action is correct |
||||
|
report_action = self.report.print_report(xlsx_report=True) |
||||
|
self.assertDictContainsSubset( |
||||
|
{ |
||||
|
'type': 'ir.actions.report.xml', |
||||
|
'report_name': self.xlsx_report_name, |
||||
|
'report_type': 'xlsx', |
||||
|
}, |
||||
|
report_action |
||||
|
) |
||||
|
|
||||
|
# Check if report template is correct |
||||
|
report_xlsx = self.env.ref(self.xlsx_action_name).render_report( |
||||
|
self.report.ids, |
||||
|
self.xlsx_report_name, |
||||
|
{'report_type': 'xlsx'} |
||||
|
) |
||||
|
self.assertGreaterEqual(len(report_xlsx[0]), 1) |
||||
|
self.assertEqual(report_xlsx[1], 'xlsx') |
||||
|
|
||||
|
def test_03_compute_data(self): |
||||
|
"""Check that the SQL queries work with all filters options""" |
||||
|
|
||||
|
for filters in [{}] + self.additional_filters: |
||||
|
current_filter = self.base_filters.copy() |
||||
|
current_filter.update(filters) |
||||
|
|
||||
|
report = self.model.create(current_filter) |
||||
|
report.compute_data_for_report() |
||||
|
|
||||
|
self.assertGreaterEqual(len(report.account_ids), 1) |
||||
|
|
||||
|
# Same filters with only one account |
||||
|
current_filter = self.base_filters.copy() |
||||
|
current_filter.update(filters) |
||||
|
current_filter.update({ |
||||
|
'filter_account_ids': |
||||
|
[(6, 0, report.account_ids[0].account_id.ids)], |
||||
|
}) |
||||
|
|
||||
|
report2 = self.model.create(current_filter) |
||||
|
report2.compute_data_for_report() |
||||
|
|
||||
|
self.assertEqual(len(report2.account_ids), 1) |
||||
|
self.assertEqual(report2.account_ids.name, |
||||
|
report.account_ids[0].name) |
||||
|
|
||||
|
if self._partner_test_is_possible(filters): |
||||
|
# Same filters with only one partner |
||||
|
report_partner_ids = report.account_ids.mapped('partner_ids') |
||||
|
partner_ids = report_partner_ids.mapped('partner_id') |
||||
|
|
||||
|
current_filter = self.base_filters.copy() |
||||
|
current_filter.update(filters) |
||||
|
current_filter.update({ |
||||
|
'filter_partner_ids': [(6, 0, partner_ids[0].ids)], |
||||
|
}) |
||||
|
|
||||
|
report3 = self.model.create(current_filter) |
||||
|
report3.compute_data_for_report() |
||||
|
|
||||
|
self.assertGreaterEqual(len(report3.account_ids), 1) |
||||
|
|
||||
|
report_partner_ids3 = report3.account_ids.mapped('partner_ids') |
||||
|
partner_ids3 = report_partner_ids3.mapped('partner_id') |
||||
|
|
||||
|
self.assertEqual(len(partner_ids3), 1) |
||||
|
self.assertEqual( |
||||
|
partner_ids3.name, |
||||
|
partner_ids[0].name |
||||
|
) |
||||
|
|
||||
|
# Same filters with only one partner and one account |
||||
|
report_partner_ids = report3.account_ids.mapped('partner_ids') |
||||
|
report_account_id = report_partner_ids.filtered( |
||||
|
lambda p: p.partner_id |
||||
|
)[0].report_account_id |
||||
|
|
||||
|
current_filter = self.base_filters.copy() |
||||
|
current_filter.update(filters) |
||||
|
current_filter.update({ |
||||
|
'filter_account_ids': |
||||
|
[(6, 0, report_account_id.account_id.ids)], |
||||
|
'filter_partner_ids': [(6, 0, partner_ids[0].ids)], |
||||
|
}) |
||||
|
|
||||
|
report4 = self.model.create(current_filter) |
||||
|
report4.compute_data_for_report() |
||||
|
|
||||
|
self.assertEqual(len(report4.account_ids), 1) |
||||
|
self.assertEqual(report4.account_ids.name, |
||||
|
report_account_id.account_id.name) |
||||
|
|
||||
|
report_partner_ids4 = report4.account_ids.mapped('partner_ids') |
||||
|
partner_ids4 = report_partner_ids4.mapped('partner_id') |
||||
|
|
||||
|
self.assertEqual(len(partner_ids4), 1) |
||||
|
self.assertEqual( |
||||
|
partner_ids4.name, |
||||
|
partner_ids[0].name |
||||
|
) |
||||
|
|
||||
|
def _partner_test_is_possible(self, filters): |
||||
|
""" |
||||
|
:return: |
||||
|
a boolean to indicate if partner test is possible |
||||
|
with current filters |
||||
|
""" |
||||
|
return True |
||||
|
|
||||
|
def _getReportModel(self): |
||||
|
""" |
||||
|
:return: the report model name |
||||
|
""" |
||||
|
raise NotImplementedError() |
||||
|
|
||||
|
def _getQwebReportName(self): |
||||
|
""" |
||||
|
:return: the qweb report name |
||||
|
""" |
||||
|
raise NotImplementedError() |
||||
|
|
||||
|
def _getXlsxReportName(self): |
||||
|
""" |
||||
|
:return: the xlsx report name |
||||
|
""" |
||||
|
raise NotImplementedError() |
||||
|
|
||||
|
def _getXlsxReportActionName(self): |
||||
|
""" |
||||
|
:return: the xlsx report action name |
||||
|
""" |
||||
|
raise NotImplementedError() |
||||
|
|
||||
|
def _getReportTitle(self): |
||||
|
""" |
||||
|
:return: the report title displayed into the report |
||||
|
""" |
||||
|
raise NotImplementedError() |
||||
|
|
||||
|
def _getBaseFilters(self): |
||||
|
""" |
||||
|
:return: the minimum required filters to generate report |
||||
|
""" |
||||
|
raise NotImplementedError() |
||||
|
|
||||
|
def _getAdditionalFiltersToBeTested(self): |
||||
|
""" |
||||
|
:return: the additional filters to generate report variants |
||||
|
""" |
||||
|
raise NotImplementedError() |
Write
Preview
Loading…
Cancel
Save
Reference in new issue