Fixes in test cases
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 4dcfdb0..a488b31 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -45,6 +45,9 @@
"Stock Entry": {
"on_submit": "erpnext.stock.doctype.material_request.material_request.update_completed_qty",
"on_cancel": "erpnext.stock.doctype.material_request.material_request.update_completed_qty"
+ },
+ "User": {
+ "on_update": "erpnext.hr.doctype.employee.employee.update_user_default"
}
}
diff --git a/erpnext/hr/doctype/employee/employee.py b/erpnext/hr/doctype/employee/employee.py
index abda8ae..6846b87 100644
--- a/erpnext/hr/doctype/employee/employee.py
+++ b/erpnext/hr/doctype/employee/employee.py
@@ -52,8 +52,7 @@
self.validate_duplicate_user_id()
def on_update(self):
- if self.user_id and frappe.db.get_value("User", self.user_id, 'docstatus') == 0:
- self.restrict_user()
+ if self.user_id:
self.update_user_default()
self.update_user()
@@ -65,6 +64,7 @@
self.add_restriction_if_required("Employee", self.user_id)
def update_user_default(self):
+ self.restrict_user()
frappe.db.set_default("employee_name", self.employee_name, self.user_id)
frappe.db.set_default("company", self.company, self.user_id)
@@ -228,3 +228,11 @@
})
target.make_earn_ded_table()
return target
+
+def update_user_default(doc, method):
+ # called via User hook
+ try:
+ employee = frappe.get_doc("Employee", {"user_id": doc.name})
+ employee.update_user_default()
+ except frappe.DoesNotExistError:
+ pass
diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py
index fdd8bfe..f6faf52 100644
--- a/erpnext/hr/doctype/leave_application/test_leave_application.py
+++ b/erpnext/hr/doctype/leave_application/test_leave_application.py
@@ -5,6 +5,7 @@
import unittest
from erpnext.hr.doctype.leave_application.leave_application import LeaveDayBlockedError, OverlapError
+from frappe.core.page.user_properties.user_properties import clear_restrictions
test_dependencies = ["Leave Allocation", "Leave Block List"]
@@ -67,6 +68,18 @@
employee.save()
frappe.set_user(temp_session_user)
+ def _remove_employee_leave_approver(self, employee, leave_approver):
+ temp_session_user = frappe.session.user
+ frappe.set_user("Administrator")
+ employee = frappe.get_doc("Employee", employee)
+ d = employee.get("employee_leave_approvers", {
+ "leave_approver": leave_approver
+ })
+ if d:
+ employee.get("employee_leave_approvers").remove(d[0])
+ employee.save()
+ frappe.set_user(temp_session_user)
+
def get_application(self, doc):
application = frappe.copy_doc(doc)
application.from_date = "2013-01-01"
@@ -78,6 +91,7 @@
from frappe.utils.user import add_role
add_role("test1@example.com", "HR User")
+ clear_restrictions("Employee")
frappe.db.set_value("Department", "_Test Department",
"leave_block_list", "_Test Leave Block List")
@@ -154,6 +168,8 @@
def _test_leave_approval_basic_case(self):
self._clear_applications()
+ self._add_employee_leave_approver("_T-Employee-0001", "test1@example.com")
+
# create leave application as Employee
frappe.set_user("test@example.com")
application = self.get_application(_test_records[0])
@@ -175,8 +191,8 @@
# add a different leave approver in the employee's list
# should raise exception if not a valid leave approver
self._add_employee_leave_approver("_T-Employee-0001", "test2@example.com")
+ self._remove_employee_leave_approver("_T-Employee-0001", "test1@example.com")
- # TODO - add test2@example.com leave approver in employee's leave approvers list
application = self.get_application(_test_records[0])
frappe.set_user("test@example.com")
diff --git a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
index a849ba7..dceaee7 100644
--- a/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
+++ b/erpnext/projects/doctype/time_log_batch/test_time_log_batch.py
@@ -5,6 +5,10 @@
class TimeLogBatchTest(unittest.TestCase):
def setUp(self):
+ for name in frappe.db.sql_list("select name from `tabTime Log Batch` where docstatus=1"):
+ frappe.get_doc("Time Log Batch", name).cancel()
+ frappe.delete_doc("Time Log Batch", name)
+
for name in frappe.db.sql_list("select name from `tabTime Log` where docstatus=1"):
frappe.get_doc("Time Log", name).cancel()
frappe.delete_doc("Time Log", name)