summaryrefslogtreecommitdiff
path: root/jasper_reports/tests/test_jasper_report.py
blob: 34dd7019698ef72b9396835bb2564dcc14ea994e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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, {})