You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
2.5 KiB

  1. # Copyright 2018 Forest and Biomass Romania
  2. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  3. import logging
  4. from odoo.tests.common import TransactionCase
  5. from odoo.tools import test_reports
  6. _logger = logging.getLogger(__name__)
  7. class AbstractTest(TransactionCase):
  8. """Common technical tests for all reports."""
  9. def setUp(cls):
  10. super(AbstractTest, cls).setUp()
  11. cls.model = cls._getReportModel()
  12. cls.qweb_report_name = cls._getQwebReportName()
  13. cls.xlsx_report_name = cls._getXlsxReportName()
  14. cls.xlsx_action_name = cls._getXlsxReportActionName()
  15. cls.report_title = cls._getReportTitle()
  16. cls.base_filters = cls._getBaseFilters()
  17. cls.report = cls.model.create(cls.base_filters)
  18. cls.report.compute_data_for_report()
  19. def test_html(self):
  20. test_reports.try_report(self.env.cr, self.env.uid,
  21. self.qweb_report_name,
  22. [self.report.id],
  23. report_type='qweb-html')
  24. def test_qweb(self):
  25. test_reports.try_report(self.env.cr, self.env.uid,
  26. self.qweb_report_name,
  27. [self.report.id],
  28. report_type='qweb-pdf')
  29. def test_xlsx(self):
  30. test_reports.try_report(self.env.cr, self.env.uid,
  31. self.xlsx_report_name,
  32. [self.report.id],
  33. report_type='xlsx')
  34. def test_print(self):
  35. self.report.print_report('qweb')
  36. self.report.print_report('xlsx')
  37. def test_generation_report_html(self):
  38. """Check if report HTML is correctly generated"""
  39. # Check if returned report action is correct
  40. report_type = 'qweb-html'
  41. report_action = self.report.print_report(report_type)
  42. self.assertDictContainsSubset(
  43. {
  44. 'type': 'ir.actions.report',
  45. 'report_name': self.qweb_report_name,
  46. 'report_type': 'qweb-html',
  47. },
  48. report_action
  49. )
  50. # Check if report template is correct
  51. report = self.env['ir.actions.report'].search(
  52. [('report_name', '=', self.qweb_report_name),
  53. ('report_type', '=', report_type)], limit=1)
  54. self.assertEqual(report.report_type, 'qweb-html')
  55. rep = report.render(self.report.ids, {})
  56. self.assertTrue(self.report_title.encode('utf8') in rep[0])