[ui test] leave application in HR (#10151)

* added test for leave application

* minor changes and path added

* travis fixes

* minor changes
diff --git a/erpnext/hr/doctype/leave_application/test_leave_application.js b/erpnext/hr/doctype/leave_application/test_leave_application.js
new file mode 100644
index 0000000..51e8ed6
--- /dev/null
+++ b/erpnext/hr/doctype/leave_application/test_leave_application.js
@@ -0,0 +1,50 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Leave application [HR]", function (assert) {
+	assert.expect(5);
+	let done = assert.async();
+	let today_date = frappe.datetime.nowdate();
+	let leave_date = frappe.datetime.add_days(today_date, 1);	// leave for tomorrow
+
+	frappe.run_serially([
+		// test creating leave application
+		() => frappe.db.get_value('Employee', {'employee_name':'Test Employee 1'}, 'name'),
+		(employee) => {
+			return frappe.tests.make('Leave Application', [
+				{leave_type: "Test Leave type"},
+				{from_date: leave_date},	// for today
+				{to_date: leave_date},
+				{half_day: 1},
+				{employee: employee.message.name},
+				{leave_approver: "Administrator"},
+				{follow_via_email: 0}
+			]);
+		},
+		() => frappe.timeout(1),
+		// check calculated total leave days
+		() => assert.equal("0.5", cur_frm.doc.total_leave_days,
+			"leave application for half day"),
+		() => assert.ok(!cur_frm.doc.docstatus,
+			"leave application not submitted with status as open"),
+		() => cur_frm.set_value("status", "Approved"),	// approve the application [as administrator]
+		() => frappe.timeout(0.5),
+		// save form
+		() => cur_frm.save(),
+		() => frappe.timeout(1),
+		() => cur_frm.savesubmit(),
+		() => frappe.timeout(1),
+		() => frappe.click_button('Yes'),
+		() => frappe.timeout(1),
+		() => assert.ok(cur_frm.doc.docstatus,
+			"leave application submitted after approval"),
+		// check auto filled posting date [today]
+		() => assert.equal(today_date, cur_frm.doc.posting_date,
+			"posting date correctly set"),
+		() => frappe.set_route("List", "Leave Application", "List"),
+		() => frappe.timeout(1),
+		// check approved application in list
+		() => assert.deepEqual(["Test Employee 1", "Approved"], [cur_list.data[0].employee_name, cur_list.data[0].status],
+			"leave for correct employee is approved"),
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index 60ca47c..a8c1a7e 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -23,6 +23,7 @@
 erpnext/hr/doctype/leave_type/test_leave_type.js
 erpnext/hr/doctype/leave_control_panel/test_leave_control_panel.js
 erpnext/hr/doctype/leave_allocation/test_leave_allocation.js
+erpnext/hr/doctype/leave_application/test_leave_application.js
 erpnext/schools/doctype/academic_year/test_academic_year.js
 erpnext/schools/doctype/academic_term/test_academic_term.js
 erpnext/schools/doctype/school_settings/test_school_settings.js