mirror of
https://github.com/frappe/erpnext.git
synced 2026-08-04 10:14:39 +00:00
frappe.get_list defaults to 20 rows; child-table joins can produce duplicate parent names that fill the window and hide further drafts. Also clarify the check-ordering regression test.
55 lines
2.2 KiB
Python
55 lines
2.2 KiB
Python
import frappe
|
|
|
|
from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry
|
|
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
|
|
from erpnext.controllers.draft_links import get_existing_drafts
|
|
from erpnext.selling.doctype.sales_order.mapper import make_delivery_note
|
|
from erpnext.selling.doctype.sales_order.test_sales_order import make_sales_order
|
|
from erpnext.stock.doctype.delivery_note.mapper import make_packing_slip
|
|
from erpnext.tests.utils import ERPNextTestSuite
|
|
|
|
|
|
class TestDraftLinks(ERPNextTestSuite):
|
|
def test_finds_draft_via_child_table_link(self):
|
|
so = make_sales_order()
|
|
dn = make_delivery_note(so.name)
|
|
dn.insert()
|
|
|
|
self.assertIn(dn.name, get_existing_drafts("Sales Order", so.name, "Delivery Note"))
|
|
|
|
frappe.db.set_value("Delivery Note", dn.name, "docstatus", 1)
|
|
self.assertNotIn(dn.name, get_existing_drafts("Sales Order", so.name, "Delivery Note"))
|
|
|
|
def test_finds_draft_via_dynamic_link(self):
|
|
pi = make_purchase_invoice()
|
|
pe = get_payment_entry("Purchase Invoice", pi.name)
|
|
pe.insert()
|
|
|
|
self.assertIn(pe.name, get_existing_drafts("Purchase Invoice", pi.name, "Payment Entry"))
|
|
|
|
def test_finds_draft_via_parent_link(self):
|
|
so = make_sales_order()
|
|
dn = make_delivery_note(so.name)
|
|
dn.insert()
|
|
packing_slip = make_packing_slip(dn.name)
|
|
packing_slip.insert()
|
|
|
|
self.assertIn(packing_slip.name, get_existing_drafts("Delivery Note", dn.name, "Packing Slip"))
|
|
|
|
def test_nonexistent_target_doctype_does_not_raise_for_non_admin(self):
|
|
# guards check ordering: for non-Administrator users has_permission()
|
|
# raises DoesNotExistError on unknown doctypes, so existence must be
|
|
# checked first (Administrator short-circuits and would not catch this)
|
|
with self.set_user("test@example.com"):
|
|
drafts = get_existing_drafts("Sales Order", "SO-0001", "Inter Company Purchase Order")
|
|
self.assertEqual(drafts, [])
|
|
|
|
def test_requires_permission_on_target_doctype(self):
|
|
so = make_sales_order()
|
|
dn = make_delivery_note(so.name)
|
|
dn.insert()
|
|
|
|
with self.set_user("test@example.com"):
|
|
drafts = get_existing_drafts("Sales Order", so.name, "Delivery Note")
|
|
self.assertEqual(drafts, [])
|