test: Refactor exotel test setup

- Remove unnecessary code
- Move test data to separate file
- Make proper test assertions
diff --git a/erpnext/tests/exotel_test_data.py b/erpnext/tests/exotel_test_data.py
new file mode 100644
index 0000000..e2ae7f7
--- /dev/null
+++ b/erpnext/tests/exotel_test_data.py
@@ -0,0 +1,114 @@
+import frappe
+
+call_initiation_data = frappe._dict({
+	"CallSid": "23c162077629863c1a2d7f29263a162m",
+	"CallFrom": "09999999991",
+	"CallTo": "09999999980",
+	"Direction": "incoming",
+	"Created": "Wed, 23 Feb 2022 12:31:59",
+	"From": "09999999991",
+	"To": "09999999988",
+	"CurrentTime": "2022-02-23 12:32:02",
+	"DialWhomNumber": "09999999999",
+	"Status": "busy",
+	"EventType": "Dial",
+	"AgentEmail": "test_employee_exotel@company.com",
+})
+
+call_end_data = frappe._dict({
+	"CallSid": "23c162077629863c1a2d7f29263a162m",
+	"CallFrom": "09999999991",
+	"CallTo": "09999999980",
+	"Direction": "incoming",
+	"ForwardedFrom": "null",
+	"Created": "Wed, 23 Feb 2022 12:31:59",
+	"DialCallDuration": "17",
+	"RecordingUrl": "https://s3-ap-southeast-1.amazonaws.com/random.mp3",
+	"StartTime": "2022-02-23 12:31:58",
+	"EndTime": "1970-01-01 05:30:00",
+	"DialCallStatus": "completed",
+	"CallType": "completed",
+	"DialWhomNumber": "09999999999",
+	"ProcessStatus": "null",
+	"flow_id": "228040",
+	"tenant_id": "67291",
+	"From": "09999999991",
+	"To": "09999999988",
+	"RecordingAvailableBy": "Wed, 23 Feb 2022 12:37:25",
+	"CurrentTime": "2022-02-23 12:32:25",
+	"OutgoingPhoneNumber": "09999999988",
+	"Legs": [
+		{
+			"Number": "09999999999",
+			"Type": "single",
+			"OnCallDuration": "10",
+			"CallerId": "09999999980",
+			"CauseCode": "NORMAL_CLEARING",
+			"Cause": "16",
+		}
+	],
+})
+
+call_disconnected_data = frappe._dict({
+	"CallSid": "d96421addce69e24bdc7ce5880d1162l",
+	"CallFrom": "09999999991",
+	"CallTo": "09999999980",
+	"Direction": "incoming",
+	"ForwardedFrom": "null",
+	"Created": "Mon, 21 Feb 2022 15:58:12",
+	"DialCallDuration": "0",
+	"StartTime": "2022-02-21 15:58:12",
+	"EndTime": "1970-01-01 05:30:00",
+	"DialCallStatus": "canceled",
+	"CallType": "client-hangup",
+	"DialWhomNumber": "09999999999",
+	"ProcessStatus": "null",
+	"flow_id": "228040",
+	"tenant_id": "67291",
+	"From": "09999999991",
+	"To": "09999999988",
+	"CurrentTime": "2022-02-21 15:58:47",
+	"OutgoingPhoneNumber": "09999999988",
+	"Legs": [
+		{
+			"Number": "09999999999",
+			"Type": "single",
+			"OnCallDuration": "0",
+			"CallerId": "09999999980",
+			"CauseCode": "RING_TIMEOUT",
+			"Cause": "1003",
+		}
+	],
+})
+
+call_not_answered_data = frappe._dict({
+	"CallSid": "fdb67a2b4b2d057b610a52ef43f81622",
+	"CallFrom": "09999999991",
+	"CallTo": "09999999980",
+	"Direction": "incoming",
+	"ForwardedFrom": "null",
+	"Created": "Mon, 21 Feb 2022 15:47:02",
+	"DialCallDuration": "0",
+	"StartTime": "2022-02-21 15:47:02",
+	"EndTime": "1970-01-01 05:30:00",
+	"DialCallStatus": "no-answer",
+	"CallType": "incomplete",
+	"DialWhomNumber": "09999999999",
+	"ProcessStatus": "null",
+	"flow_id": "228040",
+	"tenant_id": "67291",
+	"From": "09999999991",
+	"To": "09999999988",
+	"CurrentTime": "2022-02-21 15:47:40",
+	"OutgoingPhoneNumber": "09999999988",
+	"Legs": [
+		{
+			"Number": "09999999999",
+			"Type": "single",
+			"OnCallDuration": "0",
+			"CallerId": "09999999980",
+			"CauseCode": "RING_TIMEOUT",
+			"Cause": "1003",
+		}
+	],
+})
\ No newline at end of file
diff --git a/erpnext/tests/test_exotel.py b/erpnext/tests/test_exotel.py
index 91e8f50..d2e317a 100644
--- a/erpnext/tests/test_exotel.py
+++ b/erpnext/tests/test_exotel.py
@@ -16,154 +16,42 @@
 		create_contact("Test Contact", "Mr", phones=phones)
 
 	def test_for_successful_call(self):
-		data = {
-			"CallSid": "23c162077629863c1a2d7f29263a162m",
-			"CallFrom": "09999999991",
-			"CallTo": "09999999980",
-			"Direction": "incoming",
-			"Created": "Wed, 23 Feb 2022 12:31:59",
-			"From": "09999999991",
-			"To": "09999999988",
-			"CurrentTime": "2022-02-23 12:32:02",
-			"DialWhomNumber": "09999999999",
-			"Status": "busy",
-			"EventType": "Dial",
-			"AgentEmail": "test_employee_exotel@company.com",
-		}
-		end_call_data = {
-			"CallSid": "23c162077629863c1a2d7f29263a162m",
-			"CallFrom": "09999999991",
-			"CallTo": "09999999980",
-			"Direction": "incoming",
-			"ForwardedFrom": "null",
-			"Created": "Wed, 23 Feb 2022 12:31:59",
-			"DialCallDuration": "17",
-			"RecordingUrl": "https://s3-ap-southeast-1.amazonaws.com/exotelrecordings/erpnext/23c162077629863c1a2d7f29263a162n.mp3",
-			"StartTime": "2022-02-23 12:31:58",
-			"EndTime": "1970-01-01 05:30:00",
-			"DialCallStatus": "completed",
-			"CallType": "completed",
-			"DialWhomNumber": "09999999999",
-			"ProcessStatus": "null",
-			"flow_id": "228040",
-			"tenant_id": "67291",
-			"From": "09999999991",
-			"To": "09999999988",
-			"RecordingAvailableBy": "Wed, 23 Feb 2022 12:37:25",
-			"CurrentTime": "2022-02-23 12:32:25",
-			"OutgoingPhoneNumber": "09999999988",
-			"Legs": [
-				{
-					"Number": "09999999999",
-					"Type": "single",
-					"OnCallDuration": "10",
-					"CallerId": "09999999980",
-					"CauseCode": "NORMAL_CLEARING",
-					"Cause": "16",
-				}
-			],
-		}
+		from .exotel_test_data import call_initiation_data, call_end_data
 		api_method = "handle_incoming_call"
 		end_call_api_method = "handle_end_call"
-		emulate_api_call(data, api_method, end_call_data, end_call_api_method)
 
-		frappe.reload_doctype("Call Log")
-		call_log = frappe.get_doc(
-			"Call Log", {"from": "09999999991", "to": "09999999999", "status": "Completed"}
-		)
 
+		emulate_api_call(call_initiation_data, api_method)
+		emulate_api_call(call_end_data, end_call_api_method)
 		self.assertEqual(call_log.get("from"), "09999999991")
 		self.assertEqual(call_log.get("to"), "09999999999")
+		call_log = frappe.get_doc("Call Log", call_initiation_data.CallSid)
+
+		self.assertEqual(call_log.get("from"), call_initiation_data.CallFrom)
+		self.assertEqual(call_log.get("to"), call_initiation_data.DialWhomNumber)
 		self.assertEqual(call_log.get("call_received_by"), "EMP-00001")
 		self.assertEqual(call_log.get("status"), "Completed")
 
 	def test_for_disconnected_call(self):
-		data = {
-			"CallSid": "d96421addce69e24bdc7ce5880d1162l",
-			"CallFrom": "09999999991",
-			"CallTo": "09999999980",
-			"Direction": "incoming",
-			"ForwardedFrom": "null",
-			"Created": "Mon, 21 Feb 2022 15:58:12",
-			"DialCallDuration": "0",
-			"StartTime": "2022-02-21 15:58:12",
-			"EndTime": "1970-01-01 05:30:00",
-			"DialCallStatus": "canceled",
-			"CallType": "client-hangup",
-			"DialWhomNumber": "09999999999",
-			"ProcessStatus": "null",
-			"flow_id": "228040",
-			"tenant_id": "67291",
-			"From": "09999999991",
-			"To": "09999999988",
-			"CurrentTime": "2022-02-21 15:58:47",
-			"OutgoingPhoneNumber": "09999999988",
-			"Legs": [
-				{
-					"Number": "09999999999",
-					"Type": "single",
-					"OnCallDuration": "0",
-					"CallerId": "09999999980",
-					"CauseCode": "RING_TIMEOUT",
-					"Cause": "1003",
-				}
-			],
-		}
+		from .exotel_test_data import call_disconnected_data
 		api_method = "handle_missed_call"
-		emulate_api_call(data, api_method)
+		emulate_api_call(call_disconnected_data, api_method)
+		call_log = frappe.get_doc("Call Log", call_disconnected_data.CallSid)
 
-		frappe.reload_doctype("Call Log")
-		call_log = frappe.get_doc(
-			"Call Log", {"from": "09999999991", "to": "09999999999", "status": "Canceled"}
-		)
-
-		self.assertEqual(call_log.get("from"), "09999999991")
-		self.assertEqual(call_log.get("to"), "09999999999")
+		self.assertEqual(call_log.get("from"), call_disconnected_data.CallFrom)
+		self.assertEqual(call_log.get("to"), call_disconnected_data.DialWhomNumber)
 		self.assertEqual(call_log.get("call_received_by"), "EMP-00001")
 		self.assertEqual(call_log.get("status"), "Canceled")
 
 	def test_for_call_not_answered(self):
-		data = {
-			"CallSid": "fdb67a2b4b2d057b610a52ef43f81622",
-			"CallFrom": "09999999991",
-			"CallTo": "09999999980",
-			"Direction": "incoming",
-			"ForwardedFrom": "null",
-			"Created": "Mon, 21 Feb 2022 15:47:02",
-			"DialCallDuration": "0",
-			"StartTime": "2022-02-21 15:47:02",
-			"EndTime": "1970-01-01 05:30:00",
-			"DialCallStatus": "no-answer",
-			"CallType": "incomplete",
-			"DialWhomNumber": "09999999999",
-			"ProcessStatus": "null",
-			"flow_id": "228040",
-			"tenant_id": "67291",
-			"From": "09999999991",
-			"To": "09999999988",
-			"CurrentTime": "2022-02-21 15:47:40",
-			"OutgoingPhoneNumber": "09999999988",
-			"Legs": [
-				{
-					"Number": "09999999999",
-					"Type": "single",
-					"OnCallDuration": "0",
-					"CallerId": "09999999980",
-					"CauseCode": "RING_TIMEOUT",
-					"Cause": "1003",
-				}
-			],
-		}
+		from .exotel_test_data import call_not_answered_data
 		api_method = "handle_missed_call"
-		emulate_api_call(data, api_method)
+		emulate_api_call(call_not_answered_data, api_method)
 
-		frappe.reload_doctype("Call Log")
-		call_log = frappe.get_doc(
-			"Call Log", {"from": "09999999991", "to": "09999999999", "status": "No Answer"}
-		)
+		call_log = frappe.get_doc("Call Log", call_not_answered_data.CallSid)
 
-		self.assertEqual(call_log.get("from"), "09999999991")
-		self.assertEqual(call_log.get("to"), "09999999999")
+		self.assertEqual(call_log.get("from"), call_not_answered_data.CallFrom)
+		self.assertEqual(call_log.get("to"), call_not_answered_data.DialWhomNumber)
 		self.assertEqual(call_log.get("call_received_by"), "EMP-00001")
 		self.assertEqual(call_log.get("status"), "No Answer")
 
@@ -171,29 +59,14 @@
 		frappe.db.rollback()
 
 
-def emulate_api_call(data, api_method, end_call_data=None, end_call_api_method=None):
+def emulate_api_call(data, api_method):
 	# Build URL
+	url = get_exotel_handler_endpoint(api_method)
+	res = requests.post(url=url, data=frappe.as_json(data))
+	res.raise_for_status()
+	time.sleep(1)
+
+def get_exotel_handler_endpoint(method):
+	site = "localhost" if os.environ.get("CI") else frappe.local.site
 	port = frappe.get_site_config().webserver_port or "8000"
-
-	if os.environ.get("CI"):
-		host = "localhost"
-	else:
-		host = frappe.local.site
-
-	url = "http://{site}:{port}/api/method/erpnext.erpnext_integrations.exotel_integration.{api_method}".format(
-		site=host, port=port, api_method=api_method
-	)
-
-	if end_call_data:
-		end_call_url = "http://{site}:{port}/api/method/erpnext.erpnext_integrations.exotel_integration.{end_call_api_method}".format(
-			site=host, port=port, end_call_api_method=end_call_api_method
-		)
-
-	requests.post(url=url, data=data)
-	time.sleep(3)
-
-	if end_call_data:
-		requests.post(url=end_call_url, data=end_call_data)
-		time.sleep(3)
-
-	return
+	return f"http://{site}:{port}/api/method/erpnext.erpnext_integrations.exotel_integration.{method}"
\ No newline at end of file