OCA reporting engine fork for dev and update.
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.

55 lines
2.0 KiB

  1. # Copyright 2019 Creu Blanca
  2. # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
  3. from io import StringIO
  4. from odoo.tests import common
  5. import logging
  6. _logger = logging.getLogger(__name__)
  7. try:
  8. import csv
  9. except ImportError:
  10. _logger.debug('Can not import csv.')
  11. class TestReport(common.TransactionCase):
  12. def setUp(self):
  13. super().setUp()
  14. report_object = self.env['ir.actions.report']
  15. self.csv_report = (
  16. self.env['report.report_csv.abstract']
  17. .with_context(active_model='res.partner')
  18. )
  19. self.report_name = 'report_csv.partner_csv'
  20. self.report = report_object._get_report_from_name(self.report_name)
  21. self.docs = self.env['res.company'].search([], limit=1).partner_id
  22. def test_report(self):
  23. report = self.report
  24. self.assertEqual(report.report_type, 'csv')
  25. rep = report.render(self.docs.ids, {})
  26. str_io = StringIO(rep[0])
  27. dict_report = list(csv.DictReader(str_io, delimiter=';',
  28. quoting=csv.QUOTE_ALL))
  29. self.assertEqual(self.docs.name, dict(dict_report[0])['name'])
  30. def test_id_retrieval(self):
  31. # Typical call from WebUI with wizard
  32. objs = self.csv_report._get_objs_for_report(
  33. False, {"context": {"active_ids": self.docs.ids}})
  34. self.assertEquals(objs, self.docs)
  35. # Typical call from within code not to report_action
  36. objs = self.csv_report.with_context(
  37. active_ids=self.docs.ids)._get_objs_for_report(False, False)
  38. self.assertEquals(objs, self.docs)
  39. # Typical call from WebUI
  40. objs = self.csv_report._get_objs_for_report(
  41. self.docs.ids,
  42. {"data": [self.report_name, self.report.report_type]}
  43. )
  44. self.assertEquals(objs, self.docs)
  45. # Typical call from render
  46. objs = self.csv_report._get_objs_for_report(self.docs.ids, {})
  47. self.assertEquals(objs, self.docs)