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)