From 8f3d096dbae18bacd95796d03b17d4d94a806c85 Mon Sep 17 00:00:00 2001 From: stephanchrst Date: Tue, 13 Sep 2022 12:05:33 +0700 Subject: jasper report integration --- jasper_reports/tests/__init__.py | 2 + jasper_reports/tests/test_jasper_report.py | 56 ++++++++++++++ jasper_reports/tests/user.jrxml | 119 +++++++++++++++++++++++++++++ 3 files changed, 177 insertions(+) create mode 100755 jasper_reports/tests/__init__.py create mode 100755 jasper_reports/tests/test_jasper_report.py create mode 100755 jasper_reports/tests/user.jrxml (limited to 'jasper_reports/tests') diff --git a/jasper_reports/tests/__init__.py b/jasper_reports/tests/__init__.py new file mode 100755 index 0000000..7b8f839 --- /dev/null +++ b/jasper_reports/tests/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import test_jasper_report diff --git a/jasper_reports/tests/test_jasper_report.py b/jasper_reports/tests/test_jasper_report.py new file mode 100755 index 0000000..34dd701 --- /dev/null +++ b/jasper_reports/tests/test_jasper_report.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +import base64 +from odoo.tests.common import TransactionCase +from odoo.modules.module import get_module_resource +# from odoo.addons.jasper_reports.controllers.main import ReportController +# from odoo.addons.web.controllers.main import ReportController + + +class TestJasperReport(TransactionCase): + + def setUp(self): + super(TestJasperReport, self).setUp() + # First we have to convert .jrxml file to binary + # In order to create a new report record + # File path + path = get_module_resource('jasper_reports', 'tests', 'user.jrxml') + # Opening file + file = open(path, 'rb') + # Reading + file_content = file.read() + # Converting as base64 + report_file = base64.b64encode(file_content) + + self.JasperReport = self.env['ir.actions.report'] + self.users_model = self.env['ir.model'].search([ + ('model', '=', 'res.users')]) + self.report_data = self.JasperReport.create({ + 'name': 'Jasper Test Report', + 'model': 'res.users', + 'attachment_use': True, + 'model_id': self.users_model and + self.users_model.id or False, + 'jasper_output': 'pdf', + 'report_name': 'res_users_jasper', + 'jasper_report': True, + 'jasper_file_ids': [ + (0, 0, { + 'default': True, + 'filename': 'user.jrxml', + 'file': report_file, + }) + ] + }) + + def test_report(self): + report_object = self.env['ir.actions.report'] + report_name = self.report_data.report_name + report = report_object._get_report_from_name(report_name) + docs = self.env['res.users'].search([], limit=1) + self.assertEqual(report.report_type, 'qweb-pdf') + # We are giving travis postgres cradentials for + # db connectivity in order to make sure that test case + # can connect with database. + self.env['ir.config_parameter'].set_param('db_user', 'postgres') + self.env['ir.config_parameter'].set_param('db_password', '') + return report.render_jasper(docs.ids, {}) diff --git a/jasper_reports/tests/user.jrxml b/jasper_reports/tests/user.jrxml new file mode 100755 index 0000000..d003429 --- /dev/null +++ b/jasper_reports/tests/user.jrxml @@ -0,0 +1,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + <band height="79" splitType="Stretch"> + <staticText> + <reportElement x="0" y="0" width="555" height="79" /> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font size="30" isBold="true"/> + </textElement> + <text><![CDATA[User Report]]></text> + </staticText> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.3