mirror of
https://github.com/frappe/erpnext.git
synced 2026-03-05 19:42:45 +00:00
chore: added test case for employee query with user permissions
This commit is contained in:
@@ -81,7 +81,7 @@ def has_ignored_field(reference_doctype, doctype):
|
||||
continue
|
||||
if isinstance(options, str):
|
||||
options = options.split("\n")
|
||||
if doctype in options or "Doctype" in options:
|
||||
if doctype in options or "DocType" in options:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
@@ -2,6 +2,9 @@ import unittest
|
||||
from functools import partial
|
||||
|
||||
import frappe
|
||||
from frappe.core.doctype.user_permission.test_user_permission import create_user
|
||||
from frappe.core.doctype.user_permission.user_permission import add_user_permissions
|
||||
from frappe.custom.doctype.property_setter.property_setter import make_property_setter
|
||||
from frappe.tests import IntegrationTestCase
|
||||
|
||||
from erpnext.controllers import queries
|
||||
@@ -85,3 +88,54 @@ class TestQueries(IntegrationTestCase):
|
||||
|
||||
def test_default_uoms(self):
|
||||
self.assertGreaterEqual(frappe.db.count("UOM", {"enabled": 1}), 10)
|
||||
|
||||
def test_employee_query_with_user_permissions(self):
|
||||
# party field is a dynamic link field in Payment Entry doctype with ignore_user_permissions=0
|
||||
ps = make_property_setter(
|
||||
doctype="Payment Entry",
|
||||
fieldname="party",
|
||||
property="ignore_user_permissions",
|
||||
value=1,
|
||||
property_type="Check",
|
||||
)
|
||||
ps.save()
|
||||
|
||||
user = create_user("test_employee_query@example.com", ("Accounts User", "HR User"))
|
||||
add_user_permissions(
|
||||
{
|
||||
"user": user.name,
|
||||
"doctype": "Employee",
|
||||
"docname": "_T-Employee-00001",
|
||||
"is_default": 1,
|
||||
"apply_to_all_doctypes": 1,
|
||||
"applicable_doctypes": [],
|
||||
"hide_descendants": 0,
|
||||
}
|
||||
)
|
||||
|
||||
frappe.reload_doc("accounts", "doctype", "payment entry")
|
||||
|
||||
frappe.set_user(user.name)
|
||||
params = {
|
||||
"doctype": "Employee",
|
||||
"txt": "",
|
||||
"searchfield": "name",
|
||||
"start": 0,
|
||||
"page_len": 20,
|
||||
"filters": None,
|
||||
"reference_doctype": "Payment Entry",
|
||||
"ignore_user_permissions": 1,
|
||||
}
|
||||
|
||||
result = queries.employee_query(**params)
|
||||
self.assertGreater(len(result), 1)
|
||||
|
||||
ps.delete(ignore_permissions=1, force=1, delete_permanently=1)
|
||||
frappe.reload_doc("accounts", "doctype", "payment entry")
|
||||
frappe.clear_cache()
|
||||
|
||||
# only one employee should be returned even though ignore_user_permissions is passed as 1
|
||||
result = queries.employee_query(**params)
|
||||
self.assertEqual(len(result), 1)
|
||||
|
||||
frappe.set_user("Administrator")
|
||||
|
||||
Reference in New Issue
Block a user