您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

test_zform_loads.py 2.0 KiB

2 年前
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. """ smoak tests to check basic functionality calls on known form loads."""
  2. import frappe
  3. from frappe.desk.form.load import getdoc
  4. from frappe.tests.utils import FrappeTestCase, change_settings
  5. from frappe.www.printview import get_html_and_style
  6. class TestFormLoads(FrappeTestCase):
  7. @change_settings("Print Settings", {"allow_print_for_cancelled": 1})
  8. def test_load(self):
  9. erpnext_modules = frappe.get_all("Module Def", filters={"app_name": "erpnext"}, pluck="name")
  10. doctypes = frappe.get_all(
  11. "DocType",
  12. {"istable": 0, "issingle": 0, "is_virtual": 0, "module": ("in", erpnext_modules)},
  13. pluck="name",
  14. )
  15. for doctype in doctypes:
  16. last_doc = frappe.db.get_value(doctype, {}, "name", order_by="modified desc")
  17. if not last_doc:
  18. continue
  19. with self.subTest(msg=f"Loading {doctype} - {last_doc}", doctype=doctype, last_doc=last_doc):
  20. self.assertFormLoad(doctype, last_doc)
  21. self.assertDocPrint(doctype, last_doc)
  22. def assertFormLoad(self, doctype, docname):
  23. # reset previous response
  24. frappe.response = frappe._dict({"docs": []})
  25. frappe.response.docinfo = None
  26. try:
  27. getdoc(doctype, docname)
  28. except Exception as e:
  29. self.fail(f"Failed to load {doctype}-{docname}: {e}")
  30. self.assertTrue(
  31. frappe.response.docs, msg=f"expected document in reponse, found: {frappe.response.docs}"
  32. )
  33. self.assertTrue(
  34. frappe.response.docinfo, msg=f"expected docinfo in reponse, found: {frappe.response.docinfo}"
  35. )
  36. def assertDocPrint(self, doctype, docname):
  37. doc = frappe.get_doc(doctype, docname)
  38. doc.set("__onload", frappe._dict())
  39. doc.run_method("onload")
  40. messages_before = frappe.get_message_log()
  41. ret = get_html_and_style(doc=doc.as_json(), print_format="Standard", no_letterhead=1)
  42. messages_after = frappe.get_message_log()
  43. if len(messages_after) > len(messages_before):
  44. new_messages = messages_after[len(messages_before) :]
  45. self.fail("Print view showing error/warnings: \n" + "\n".join(str(msg) for msg in new_messages))
  46. # html should exist
  47. self.assertTrue(bool(ret["html"]))