Tests for Expense Claims [HR] (#10514)

diff --git a/erpnext/hr/doctype/expense_claim/test_expense_claim.js b/erpnext/hr/doctype/expense_claim/test_expense_claim.js
new file mode 100644
index 0000000..c7c764c
--- /dev/null
+++ b/erpnext/hr/doctype/expense_claim/test_expense_claim.js
@@ -0,0 +1,59 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Expense Claim [HR]", function (assert) {
+	assert.expect(3);
+	let done = assert.async();
+	let employee_name;
+	let d;
+	frappe.run_serially([
+		// Creating Expense Claim
+		() => frappe.set_route('List','Expense Claim','List'),
+		() => frappe.timeout(0.3),
+		() => frappe.click_button('Make a new Expense Claim'),
+		() => {
+			cur_frm.set_value('exp_approver','Administrator'),
+			cur_frm.set_value('is_paid',1),
+			cur_frm.set_value('expenses',[]),
+			d = frappe.model.add_child(cur_frm.doc,'Expense Claim Detail','expenses'),
+			d.expense_date = '2017-08-01',
+			d.expense_type = 'Test Expense Type 1',
+			d.description  = 'This is just to test Expense Claim',
+			d.claim_amount = 2000,
+			d.sanctioned_amount=2000,
+			refresh_field('expenses');
+		},
+		() => frappe.timeout(2),
+		() => frappe.db.get_value('Employee', {'employee_name': 'Test Employee 1'}, 'name'),
+		(r) => {
+			employee_name = r.message.name;
+		},
+		() => frappe.timeout(1),
+		() => cur_frm.set_value('employee',employee_name),
+		() => cur_frm.set_value('employee_name','Test Employee 1'),
+		() => cur_frm.set_value('company','Test Company'),
+		() => cur_frm.set_value('payable_account','Creditors - TC'),
+		() => cur_frm.set_value('cost_center','Main - TC'),
+		() => cur_frm.set_value('mode_of_payment','Cash'),
+		() => cur_frm.save(),
+		() => frappe.timeout(1),
+		() => cur_frm.set_value('approval_status','Approved'),
+		() => frappe.timeout(1),
+		() => cur_frm.save(),
+		// Submitting the Expense Claim
+		() => frappe.click_button('Submit'),
+		() => frappe.click_button('Yes'),
+		() => frappe.timeout(3),
+
+		// Checking if the amount is correctly reimbursed for the employee
+		() => {
+			assert.equal(employee_name,cur_frm.get_field('employee').value,
+				'Expense Claim is created for correct employee');
+			assert.equal(1,cur_frm.get_field('is_paid').value,
+				'Expense is paid as required');
+			assert.equal(2000,cur_frm.get_field('total_amount_reimbursed').value,
+				'Amount is reimbursed correctly');
+		},
+		() => done()
+	]);
+});
+
diff --git a/erpnext/hr/doctype/expense_claim_type/test_expense_claim_type.js b/erpnext/hr/doctype/expense_claim_type/test_expense_claim_type.js
new file mode 100644
index 0000000..595454f
--- /dev/null
+++ b/erpnext/hr/doctype/expense_claim_type/test_expense_claim_type.js
@@ -0,0 +1,30 @@
+QUnit.module('hr');
+
+QUnit.test("Test: Expense Claim Type [HR]", function (assert) {
+	assert.expect(1);
+	let done = assert.async();
+	frappe.run_serially([
+		// Creating a Expense Claim Type
+		() => {
+			frappe.tests.make('Expense Claim Type', [
+				{ expense_type: 'Test Expense Type 1'},
+				{ description:'This is just a test'},
+				{ accounts: [
+					[
+						{ company: 'Test Company'},
+						{ default_account: 'Round Off - TC'}
+					]
+				]},
+			]);
+		},
+		() => frappe.timeout(5),
+
+		// Checking if the created type is present in the list
+		() => {
+			assert.equal('Test Expense Type 1', cur_frm.doc.expense_type,
+				'Expense Claim Type created successfully');
+		},
+		() => done()
+	]);
+});
+
diff --git a/erpnext/tests/ui/tests.txt b/erpnext/tests/ui/tests.txt
index 61ab529..12e2da8 100644
--- a/erpnext/tests/ui/tests.txt
+++ b/erpnext/tests/ui/tests.txt
@@ -68,6 +68,8 @@
 erpnext/hr/doctype/offer_letter/test_offer_letter.js
 erpnext/hr/doctype/appraisal_template/test_appraisal_template.js
 erpnext/hr/doctype/appraisal/test_appraisal.js
+erpnext/hr/doctype/expense_claim_type/test_expense_claim_type.js
+erpnext/hr/doctype/expense_claim/test_expense_claim.js
 erpnext/hr/doctype/training_event/test_training_event.js
 erpnext/hr/doctype/training_result_employee/test_training_result.js
 erpnext/hr/doctype/training_feedback/test_training_feedback.js