Inpatient Record - Test - Updated
diff --git a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
index b192064..f912ddb 100644
--- a/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
+++ b/erpnext/healthcare/doctype/inpatient_record/test_inpatient_record.py
@@ -7,10 +7,11 @@
 import unittest
 from frappe.utils import now_datetime, today
 from frappe.utils.make_random import get_random
-from erpnext.healthcare.doctype.inpatient_record.inpatient_record import admit_patient, discharge_patient
+from erpnext.healthcare.doctype.inpatient_record.inpatient_record import admit_patient, discharge_patient, schedule_discharge
 
 class TestInpatientRecord(unittest.TestCase):
 	def test_admit_and_discharge(self):
+		frappe.db.sql("""delete from `tabInpatient Record`""")
 		patient = get_patient()
 		# Schedule Admission
 		ip_record = create_inpatient(patient)
@@ -25,10 +26,18 @@
 		self.assertEqual(1, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied"))
 
 		# Discharge
-		discharge_patient(ip_record)
+		schedule_discharge(patient=patient)
+		self.assertEqual(0, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied"))
+
+		ip_record1 = frappe.get_doc("Inpatient Record", ip_record.name)
+		# Validate Pending Invoices
+		self.assertRaises(frappe.ValidationError, ip_record.discharge)
+		mark_invoiced_inpatient_occupancy(ip_record1)
+
+		discharge_patient(ip_record1)
+
 		self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_record"))
 		self.assertEqual(None, frappe.db.get_value("Patient", patient, "inpatient_status"))
-		self.assertEqual(0, frappe.db.get_value("Healthcare Service Unit", service_unit, "occupied"))
 
 	def test_validate_overlap_admission(self):
 		frappe.db.sql("""delete from `tabInpatient Record`""")
@@ -45,6 +54,12 @@
 		self.assertRaises(frappe.ValidationError, ip_record_new.save)
 		frappe.db.sql("""delete from `tabInpatient Record`""")
 
+def mark_invoiced_inpatient_occupancy(ip_record):
+	if ip_record.inpatient_occupancies:
+		for inpatient_occupancy in ip_record.inpatient_occupancies:
+			inpatient_occupancy.invoiced = 1
+		ip_record.save(ignore_permissions = True)
+
 def create_inpatient(patient):
 	patient_obj = frappe.get_doc('Patient', patient)
 	inpatient_record = frappe.new_doc('Inpatient Record')