seitime-frappe/frappe/tests/test_printview.py
Ankush Menat dbc2e092f1 fix: escalate print failures
Print failures shouldn't generate PDF with failure message but instead escalate the error.

This prevent all the PDFs that just contain "PermissionError" from being sent.
2024-02-28 16:42:03 +05:30

32 lines
1.1 KiB
Python

import frappe
from frappe.core.doctype.doctype.test_doctype import new_doctype
from frappe.tests.utils import FrappeTestCase
from frappe.www.printview import get_html_and_style
class PrintViewTest(FrappeTestCase):
def test_print_view_without_errors(self):
user = frappe.get_last_doc("User")
messages_before = frappe.get_message_log()
ret = get_html_and_style(doc=user.as_json(), print_format="Standard", no_letterhead=1)
messages_after = frappe.get_message_log()
if len(messages_after) > len(messages_before):
new_messages = messages_after[len(messages_before) :]
self.fail("Print view showing error/warnings: \n" + "\n".join(str(msg) for msg in new_messages))
# html should exist
self.assertTrue(bool(ret["html"]))
def test_print_error(self):
"""Print failures shouldn't generate PDF with failure message but instead escalate the error"""
doctype = new_doctype(is_submittable=1).insert()
doc = frappe.new_doc(doctype.name)
doc.insert()
doc.submit()
doc.cancel()
# cancelled doc can't be printed by default
self.assertRaises(frappe.PermissionError, frappe.attach_print, doc.doctype, doc.name)