Fee Validity - Test - Updated
diff --git a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
index 64222ad..b8305d7 100644
--- a/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
+++ b/erpnext/healthcare/doctype/fee_validity/test_fee_validity.py
@@ -5,33 +5,35 @@
 
 import frappe
 import unittest
-from erpnext.healthcare.doctype.patient_appointment.patient_appointment import invoice_appointment
 from frappe.utils.make_random import get_random
-from frappe.utils import nowdate, add_days
-# test_records = frappe.get_test_records('Fee Validity')
+from frappe.utils import nowdate, add_days, getdate
+
+test_dependencies = ["Company"]
 
 class TestFeeValidity(unittest.TestCase):
 	def test_fee_validity(self):
+		frappe.db.sql("""delete from `tabPatient Appointment`""")
+		frappe.db.sql("""delete from `tabFee Validity`""")
 		patient = get_random("Patient")
 		practitioner = get_random("Healthcare Practitioner")
 		department = get_random("Medical Department")
 
 		if not patient:
 			patient = frappe.new_doc("Patient")
-			patient.patient_name = "Test Patient"
+			patient.patient_name = "_Test Patient"
 			patient.sex = "Male"
 			patient.save(ignore_permissions=True)
 			patient = patient.name
 
 		if not department:
 			medical_department = frappe.new_doc("Medical Department")
-			medical_department.department = "Test Medical Department"
+			medical_department.department = "_Test Medical Department"
 			medical_department.save(ignore_permissions=True)
 			department = medical_department.name
 
 		if not practitioner:
 			practitioner = frappe.new_doc("Healthcare Practitioner")
-			practitioner.first_name = "Amit Jain"
+			practitioner.first_name = "_Test Healthcare Practitioner"
 			practitioner.department = department
 			practitioner.save(ignore_permissions=True)
 			practitioner = practitioner.name
@@ -42,18 +44,22 @@
 		frappe.db.set_value("Healthcare Settings", None, "valid_days", 7)
 
 		appointment = create_appointment(patient, practitioner, nowdate(), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertEqual(invoice, None)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertEqual(invoiced, 0)
+
 		invoice_appointment(appointment)
+
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 4), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertTrue(invoice)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertTrue(invoiced)
+
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 5), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertEqual(invoice, None)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertEqual(invoiced, 0)
+
 		appointment = create_appointment(patient, practitioner, add_days(nowdate(), 10), department)
-		invoice = frappe.db.get_value("Patient Appointment", appointment.name, "sales_invoice")
-		self.assertEqual(invoice, None)
+		invoiced = frappe.db.get_value("Patient Appointment", appointment.name, "invoiced")
+		self.assertEqual(invoiced, 0)
 
 def create_appointment(patient, practitioner, appointment_date, department):
 	appointment = frappe.new_doc("Patient Appointment")
@@ -64,3 +70,34 @@
 	appointment.company = "_Test Company"
 	appointment.save(ignore_permissions=True)
 	return appointment
+
+def invoice_appointment(appointment_doc):
+	if not appointment_doc.name:
+		return False
+	sales_invoice = frappe.new_doc("Sales Invoice")
+	sales_invoice.customer = frappe.get_value("Patient", appointment_doc.patient, "customer")
+	sales_invoice.due_date = getdate()
+	sales_invoice.is_pos = 0
+	sales_invoice.company = appointment_doc.company
+	sales_invoice.debit_to = "_Test Receivable - _TC"
+
+	create_invoice_items(appointment_doc, sales_invoice)
+
+	sales_invoice.save(ignore_permissions=True)
+	sales_invoice.submit()
+
+def create_invoice_items(appointment, invoice):
+	item_line = invoice.append("items")
+	item_line.item_name = "Consulting Charges"
+	item_line.description = "Consulting Charges:  " + appointment.practitioner
+	item_line.uom = "Nos"
+	item_line.conversion_factor = 1
+	item_line.income_account = "_Test Account Cost for Goods Sold - _TC"
+	item_line.cost_center = "_Test Cost Center - _TC"
+	item_line.rate = 250
+	item_line.amount = 250
+	item_line.qty = 1
+	item_line.reference_dt = "Patient Appointment"
+	item_line.reference_dn = appointment.name
+
+	return invoice