Fix Leave Application test cases
diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.py b/erpnext/hr/doctype/leave_application/test_leave_application.py
index f7f688a..4e85074 100644
--- a/erpnext/hr/doctype/leave_application/test_leave_application.py
+++ b/erpnext/hr/doctype/leave_application/test_leave_application.py
@@ -47,15 +47,16 @@
for dt in ["Leave Application", "Leave Allocation", "Salary Slip"]:
frappe.db.sql("delete from `tab%s`" % dt)
+ @classmethod
+ def setUpClass(cls):
+ set_leave_approver()
+
def tearDown(self):
frappe.set_user("Administrator")
- def _clear_roles(self):
- frappe.db.sql("""delete from `tabHas Role` where parent in
- ("test@example.com", "test1@example.com", "test2@example.com")""")
-
def _clear_applications(self):
frappe.db.sql("""delete from `tabLeave Application`""")
+ frappe.db.sql("""delete from `tabDepartment Approver` where parentfield = 'Leave Approver'""")
def get_application(self, doc):
application = frappe.copy_doc(doc)
@@ -64,11 +65,6 @@
return application
def test_block_list(self):
- self._clear_roles()
-
- from frappe.utils.user import add_role
- add_role("test1@example.com", "HR User")
- add_role("test1@example.com", "Leave Approver")
clear_user_permissions_for_doctype("Employee")
frappe.db.set_value("Department", "_Test Department - _TC",
@@ -81,7 +77,7 @@
application.status = "Approved"
self.assertRaises(LeaveDayBlockedError, application.submit)
- frappe.set_user("test1@example.com")
+ frappe.set_user("test@example.com")
# clear other applications
frappe.db.sql("delete from `tabLeave Application`")
@@ -90,13 +86,8 @@
self.assertTrue(application.insert())
def test_overlap(self):
- self._clear_roles()
self._clear_applications()
- from frappe.utils.user import add_role
- add_role("test@example.com", "Employee")
- add_role("test2@example.com", "Leave Approver")
-
frappe.set_user("test@example.com")
make_allocation_record()
@@ -108,13 +99,8 @@
self.assertRaises(OverlapError, application.insert)
def test_overlap_with_half_day_1(self):
- self._clear_roles()
self._clear_applications()
- from frappe.utils.user import add_role
- add_role("test@example.com", "Employee")
- add_role("test2@example.com", "Leave Approver")
-
frappe.set_user("test@example.com")
make_allocation_record()
@@ -143,13 +129,8 @@
self.assertRaises(OverlapError, application.insert)
def test_overlap_with_half_day_2(self):
- self._clear_roles()
self._clear_applications()
- from frappe.utils.user import add_role
- add_role("test@example.com", "Employee")
- add_role("test2@example.com", "Leave Approver")
-
frappe.set_user("test@example.com")
make_allocation_record()
@@ -166,13 +147,8 @@
self.assertRaises(OverlapError, application.insert)
def test_overlap_with_half_day_3(self):
- self._clear_roles()
self._clear_applications()
- from frappe.utils.user import add_role
- add_role("test@example.com", "Employee")
- add_role("test2@example.com", "Leave Approver")
-
frappe.set_user("test@example.com")
make_allocation_record()
@@ -200,61 +176,42 @@
application.half_day_date = "2013-01-05"
application.insert()
- def test_global_block_list(self):
- self._clear_roles()
-
- from frappe.utils.user import add_role
- add_role("test1@example.com", "Employee")
- add_role("test@example.com", "Leave Approver")
-
- make_allocation_record(employee="_T-Employee-00002")
-
- application = self.get_application(_test_records[1])
-
- frappe.db.set_value("Leave Block List", "_Test Leave Block List",
- "applies_to_all_departments", 1)
- frappe.db.set_value("Employee", "_T-Employee-00002", "department",
- "_Test Department - _TC")
-
- frappe.set_user("test1@example.com")
- application.insert()
- application.status = "Approved"
- frappe.set_user("test@example.com")
- self.assertRaises(LeaveDayBlockedError, application.submit)
-
- frappe.db.set_value("Leave Block List", "_Test Leave Block List",
- "applies_to_all_departments", 0)
def test_optional_leave(self):
leave_period = get_leave_period()
today = nowdate()
from datetime import date
- holiday_list = frappe.get_doc(dict(
- doctype = 'Holiday List',
- holiday_list_name = 'test holiday list for optional holiday',
- from_date = date(date.today().year, 1, 1),
- to_date = date(date.today().year, 12, 31),
- holidays = [
- dict(holiday_date = today, description = 'test')
- ]
- )).insert()
+ holiday_list = 'Test Holiday List for Optional Holiday'
+ if not frappe.db.exists('Holiday List', holiday_list):
+ frappe.get_doc(dict(
+ doctype = 'Holiday List',
+ holiday_list_name = holiday_list,
+ from_date = date(date.today().year, 1, 1),
+ to_date = date(date.today().year, 12, 31),
+ holidays = [
+ dict(holiday_date = today, description = 'Test')
+ ]
+ )).insert()
employee = get_employee()
- frappe.db.set_value('Leave Period', leave_period.name, 'optional_holiday_list', holiday_list.name)
- leave_type = frappe.get_doc(dict(
- leave_type_name = 'Test Optional Type',
- doctype = 'Leave Type',
- is_optional_leave = 1
- )).insert()
+ frappe.db.set_value('Leave Period', leave_period.name, 'optional_holiday_list', holiday_list)
+ leave_type = 'Test Optional Type'
+ if not frappe.db.exists('Leave Type', leave_type):
+ frappe.get_doc(dict(
+ leave_type_name = leave_type,
+ doctype = 'Leave Type',
+ is_optional_leave = 1
+ )).insert()
- allocate_leaves(employee, leave_period, leave_type.name, 10)
+ allocate_leaves(employee, leave_period, leave_type, 10)
date = add_days(today, - 1)
leave_application = frappe.get_doc(dict(
doctype = 'Leave Application',
employee = employee.name,
- leave_type = leave_type.name,
+ company = '_Test Company',
+ leave_type = leave_type,
from_date = date,
to_date = date,
))
@@ -269,7 +226,7 @@
leave_application.submit()
# check leave balance is reduced
- self.assertEqual(get_leave_balance_on(employee.name, leave_type.name, today), 9)
+ self.assertEqual(get_leave_balance_on(employee.name, leave_type, today), 9)
def test_leaves_allowed(self):
employee = get_employee()
@@ -389,29 +346,30 @@
def test_earned_leave(self):
leave_period = get_leave_period()
employee = get_employee()
-
- leave_type = frappe.get_doc(dict(
- leave_type_name = 'Test Earned Leave Type',
- doctype = 'Leave Type',
- is_earned_leave = 1,
- earned_leave_frequency = 'Monthly',
- rounding = 0.5,
- max_leaves_allowed = 6
- )).insert()
+ leave_type = 'Test Earned Leave Type'
+ if not frappe.db.exists('Leave Type', leave_type):
+ leave_type = frappe.get_doc(dict(
+ leave_type_name = leave_type,
+ doctype = 'Leave Type',
+ is_earned_leave = 1,
+ earned_leave_frequency = 'Monthly',
+ rounding = 0.5,
+ max_leaves_allowed = 6
+ )).insert()
leave_policy = frappe.get_doc({
"doctype": "Leave Policy",
- "leave_policy_details": [{"leave_type": leave_type.name, "annual_allocation": 6}]
+ "leave_policy_details": [{"leave_type": leave_type, "annual_allocation": 6}]
}).insert()
frappe.db.set_value("Employee", employee.name, "leave_policy", leave_policy.name)
- allocate_leaves(employee, leave_period, leave_type.name, 0, eligible_leaves = 12)
+ allocate_leaves(employee, leave_period, leave_type, 0, eligible_leaves = 12)
from erpnext.hr.utils import allocate_earned_leaves
i = 0
while(i<14):
allocate_earned_leaves()
i += 1
- self.assertEqual(get_leave_balance_on(employee.name, leave_type.name, nowdate()), 6)
+ self.assertEqual(get_leave_balance_on(employee.name, leave_type, nowdate()), 6)
def make_allocation_record(employee=None, leave_type=None):
frappe.db.sql("delete from `tabLeave Allocation`")
@@ -431,6 +389,14 @@
def get_employee():
return frappe.get_doc("Employee", "_T-Employee-00001")
+def set_leave_approver():
+ employee = get_employee()
+ dept_doc = frappe.get_doc("Department", employee.department)
+ dept_doc.append('leave_approver', {
+ 'approver': 'test@example.com'
+ })
+ dept_doc.save(ignore_permissions=True)
+
def get_leave_period():
leave_period_name = frappe.db.exists({
"doctype": "Leave Period",
@@ -449,7 +415,7 @@
)).insert()
def allocate_leaves(employee, leave_period, leave_type, new_leaves_allocated, eligible_leaves=0):
- frappe.get_doc({
+ allocate_leave = frappe.get_doc({
"doctype": "Leave Allocation",
"__islocal": 1,
"employee": employee.name,
@@ -460,3 +426,6 @@
"new_leaves_allocated": new_leaves_allocated,
"docstatus": 1
}).insert()
+
+ allocate_leave.submit()
+