test: employee property update via Employee Promotion
diff --git a/erpnext/hr/doctype/employee_promotion/test_employee_promotion.py b/erpnext/hr/doctype/employee_promotion/test_employee_promotion.py
index 06825ec..c2ffcfe 100644
--- a/erpnext/hr/doctype/employee_promotion/test_employee_promotion.py
+++ b/erpnext/hr/doctype/employee_promotion/test_employee_promotion.py
@@ -4,21 +4,22 @@
 import unittest
 
 import frappe
+from frappe.tests.utils import FrappeTestCase
 from frappe.utils import add_days, getdate
 
 from erpnext.payroll.doctype.salary_structure.test_salary_structure import make_employee
 
 
-class TestEmployeePromotion(unittest.TestCase):
+class TestEmployeePromotion(FrappeTestCase):
 	def setUp(self):
-		self.employee = make_employee("employee@promotions.com")
-		frappe.db.sql("""delete from `tabEmployee Promotion`""")
+		frappe.db.delete("Employee Promotion")
 
 	def test_submit_before_promotion_date(self):
-		promotion_obj = frappe.get_doc(
+		employee = make_employee("employee@promotions.com")
+		promotion = frappe.get_doc(
 			{
 				"doctype": "Employee Promotion",
-				"employee": self.employee,
+				"employee": employee,
 				"promotion_details": [
 					{
 						"property": "Designation",
@@ -29,10 +30,63 @@
 				],
 			}
 		)
-		promotion_obj.promotion_date = add_days(getdate(), 1)
-		promotion_obj.save()
-		self.assertRaises(frappe.DocstatusTransitionError, promotion_obj.submit)
-		promotion = frappe.get_doc("Employee Promotion", promotion_obj.name)
+		promotion.promotion_date = add_days(getdate(), 1)
+		self.assertRaises(frappe.DocstatusTransitionError, promotion.submit)
+
 		promotion.promotion_date = getdate()
 		promotion.submit()
 		self.assertEqual(promotion.docstatus, 1)
+
+	def test_employee_history(self):
+		for grade in ["L1", "L2"]:
+			frappe.get_doc({"doctype": "Employee Grade", "__newname": grade}).insert()
+
+		employee = make_employee(
+			"test_employee_promotion@example.com",
+			company="Test Company",
+			date_of_birth=getdate("30-09-1980"),
+			date_of_joining=getdate("01-10-2021"),
+			designation="Software Developer",
+			grade="L1",
+			salary_currency="INR",
+			annual_ctc="500000",
+		)
+
+		promotion = frappe.get_doc(
+			{
+				"doctype": "Employee Promotion",
+				"employee": employee,
+				"promotion_date": getdate(),
+				"revised_annual_ctc": "1000000",
+				"promotion_details": [
+					{
+						"property": "Designation",
+						"current": "Software Developer",
+						"new": "Project Manager",
+						"fieldname": "designation",
+					},
+					{"property": "Grade", "current": "L1", "new": "L2", "fieldname": "grade"},
+				],
+			}
+		).submit()
+
+		# employee fields updated
+		employee = frappe.get_doc("Employee", employee)
+		self.assertEqual(employee.grade, "L2")
+		self.assertEqual(employee.designation, "Project Manager")
+		self.assertEqual(employee.annual_ctc, 1000000)
+
+		# internal work history updated
+		self.assertEqual(employee.internal_work_history[0].designation, "Software Developer")
+		self.assertEqual(employee.internal_work_history[0].from_date, getdate("01-10-2021"))
+
+		self.assertEqual(employee.internal_work_history[1].designation, "Project Manager")
+		self.assertEqual(employee.internal_work_history[1].from_date, getdate())
+
+		promotion.cancel()
+		employee.reload()
+
+		# internal work history updated on cancellation
+		self.assertEqual(len(employee.internal_work_history), 1)
+		self.assertEqual(employee.internal_work_history[0].designation, "Software Developer")
+		self.assertEqual(employee.internal_work_history[0].from_date, getdate("01-10-2021"))