test: added test case to validate seachfields for customer, supplier
diff --git a/erpnext/buying/doctype/supplier/test_supplier.py b/erpnext/buying/doctype/supplier/test_supplier.py
index 5572268..e2dbf21 100644
--- a/erpnext/buying/doctype/supplier/test_supplier.py
+++ b/erpnext/buying/doctype/supplier/test_supplier.py
@@ -3,6 +3,7 @@
import frappe
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
from frappe.test_runner import make_test_records
from erpnext.accounts.party import get_due_date
@@ -152,6 +153,40 @@
# Rollback
address.delete()
+ def test_serach_fields_for_supplier(self):
+ from erpnext.controllers.queries import supplier_query
+
+ supplier_name = create_supplier(supplier_name="Test Supplier 1").name
+
+ make_property_setter(
+ "Supplier", None, "search_fields", "supplier_group", "Data", for_doctype="Doctype"
+ )
+
+ data = supplier_query(
+ "Supplier", supplier_name, "name", 0, 20, filters={"name": supplier_name}, as_dict=True
+ )
+
+ self.assertEqual(data[0].name, supplier_name)
+ self.assertEqual(data[0].supplier_group, "Services")
+ self.assertTrue("supplier_type" not in data[0])
+
+ make_property_setter(
+ "Supplier",
+ None,
+ "search_fields",
+ "supplier_group, supplier_type",
+ "Data",
+ for_doctype="Doctype",
+ )
+ data = supplier_query(
+ "Supplier", supplier_name, "name", 0, 20, filters={"name": supplier_name}, as_dict=True
+ )
+
+ self.assertEqual(data[0].name, supplier_name)
+ self.assertEqual(data[0].supplier_group, "Services")
+ self.assertEqual(data[0].supplier_type, "Company")
+ self.assertTrue("supplier_type" in data[0])
+
def create_supplier(**args):
args = frappe._dict(args)
diff --git a/erpnext/controllers/queries.py b/erpnext/controllers/queries.py
index 691a39a..3bdc017 100644
--- a/erpnext/controllers/queries.py
+++ b/erpnext/controllers/queries.py
@@ -78,7 +78,7 @@
@frappe.whitelist()
@frappe.validate_and_sanitize_search_inputs
-def customer_query(doctype, txt, searchfield, start, page_len, filters):
+def customer_query(doctype, txt, searchfield, start, page_len, filters, as_dict=False):
doctype = "Customer"
conditions = []
cust_master_name = frappe.defaults.get_user_default("cust_master_name")
@@ -110,13 +110,14 @@
}
),
{"txt": "%%%s%%" % txt, "_txt": txt.replace("%", ""), "start": start, "page_len": page_len},
+ as_dict=as_dict,
)
# searches for supplier
@frappe.whitelist()
@frappe.validate_and_sanitize_search_inputs
-def supplier_query(doctype, txt, searchfield, start, page_len, filters):
+def supplier_query(doctype, txt, searchfield, start, page_len, filters, as_dict=False):
doctype = "Supplier"
supp_master_name = frappe.defaults.get_user_default("supp_master_name")
@@ -142,6 +143,7 @@
**{"field": ", ".join(fields), "key": searchfield, "mcond": get_match_cond(doctype)}
),
{"txt": "%%%s%%" % txt, "_txt": txt.replace("%", ""), "start": start, "page_len": page_len},
+ as_dict=as_dict,
)
diff --git a/erpnext/selling/doctype/customer/test_customer.py b/erpnext/selling/doctype/customer/test_customer.py
index 7dc3fab..691adcc 100644
--- a/erpnext/selling/doctype/customer/test_customer.py
+++ b/erpnext/selling/doctype/customer/test_customer.py
@@ -3,6 +3,7 @@
import frappe
+from frappe.custom.doctype.property_setter.property_setter import make_property_setter
from frappe.test_runner import make_test_records
from frappe.tests.utils import FrappeTestCase
from frappe.utils import flt
@@ -341,6 +342,33 @@
due_date = get_due_date("2017-01-22", "Customer", "_Test Customer")
self.assertEqual(due_date, "2017-01-22")
+ def test_serach_fields_for_customer(self):
+ from erpnext.controllers.queries import customer_query
+
+ make_property_setter(
+ "Customer", None, "search_fields", "customer_group", "Data", for_doctype="Doctype"
+ )
+
+ data = customer_query(
+ "Customer", "_Test Customer", "", 0, 20, filters={"name": "_Test Customer"}, as_dict=True
+ )
+
+ self.assertEqual(data[0].name, "_Test Customer")
+ self.assertEqual(data[0].customer_group, "_Test Customer Group")
+ self.assertTrue("territory" not in data[0])
+
+ make_property_setter(
+ "Customer", None, "search_fields", "customer_group, territory", "Data", for_doctype="Doctype"
+ )
+ data = customer_query(
+ "Customer", "_Test Customer", "", 0, 20, filters={"name": "_Test Customer"}, as_dict=True
+ )
+
+ self.assertEqual(data[0].name, "_Test Customer")
+ self.assertEqual(data[0].customer_group, "_Test Customer Group")
+ self.assertEqual(data[0].territory, "_Test Territory")
+ self.assertTrue("territory" in data[0])
+
def get_customer_dict(customer_name):
return {