jcoux
8 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