Advertisement
Guest User

tests.py

a guest
Apr 21st, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.05 KB | None | 0 0
  1. import pytest
  2. from classes import System, Provider, Patient, Appointment, Error
  3. import datetime
  4.  
  5.  
  6. class Test_Appointment_Booking(object):
  7. def setup_method(self):
  8. self.sys = System()
  9. self.sys.readData()
  10.  
  11. #Test: no input date
  12. def test_no_date_input(self):
  13. with pytest.raises(Error, match = 'Please select a date'):
  14. raise self.sys.validateDate("")
  15.  
  16.  
  17. #Test: no input date before current date
  18. def test_input_date_before_current_date(self):
  19. d = datetime.date(1900,1,1)
  20. today = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  21.  
  22. with pytest.raises(Error, match = 'Please enter a date after today'):
  23. raise self.sys.validateDate(today)
  24.  
  25.  
  26. #Test Case: patient cannot select a booked Time slot
  27. def test_booked_appointment_removed(self):
  28. providers = []
  29. patients = []
  30.  
  31. for u in self.sys._users:
  32. if isinstance(u, Provider):
  33. providers.append(u)
  34. if isinstance(u, Patient):
  35. patients.append(u)
  36.  
  37.  
  38. centres = self.sys._centres
  39.  
  40. d = datetime.date(2018,11,11)
  41. date = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  42.  
  43. self.sys.setAppointment(date,"10:00",providers[7],centres[0],patients[0],None,None)
  44.  
  45. times = self.sys.getTimesByCentreAndProv(providers[7], centres[0])
  46.  
  47. #convert startHour and Endhour to time
  48. startTime = self.sys.getStartTime(times)
  49. endTime = self.sys.getEndTime(times)
  50.  
  51. assert len(self.sys.availableTimes(startTime, endTime, providers[7], centres[0], date)) == 2
  52.  
  53.  
  54. #Test: No timeslots left
  55. def test_no_times_available(self):
  56. providers = []
  57. patients = []
  58.  
  59. for u in self.sys._users:
  60. if isinstance(u, Provider):
  61. providers.append(u)
  62. if isinstance(u, Patient):
  63. patients.append(u)
  64.  
  65.  
  66. centres = self.sys._centres
  67.  
  68. d = datetime.date(2018,11,11)
  69. date = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  70.  
  71. self.sys.setAppointment(date,"10:00",providers[7],centres[0],patients[0],None,None)
  72. self.sys.setAppointment(date,"10:30",providers[7],centres[0],patients[0],None,None)
  73. self.sys.setAppointment(date,"11:00",providers[7],centres[0],patients[0],None,None)
  74.  
  75. times = self.sys.getTimesByCentreAndProv(providers[7], centres[0])
  76.  
  77. #convert startHour and Endhour to time
  78. startTime = self.sys.getStartTime(times)
  79. endTime = self.sys.getEndTime(times)
  80.  
  81. hours = self.sys.availableTimes(startTime, endTime, providers[7], centres[0], date)
  82.  
  83. with pytest.raises(Error, match = 'No available hours'):
  84. raise self.sys.validateTimes(hours)
  85.  
  86. # Test a successful booking
  87. def test_appointment_made(self):
  88. providers = []
  89. patients = []
  90.  
  91. for u in self.sys._users:
  92. if isinstance(u, Provider):
  93. providers.append(u)
  94. if isinstance(u, Patient):
  95. patients.append(u)
  96.  
  97. centres = self.sys._centres
  98.  
  99. d = datetime.date(2020,11,11)
  100. date = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  101. e = self.sys.validateDate(date)
  102. assert(e == None)
  103. assert(len(self.sys.getAppointment()) == 0)
  104. self.sys.setAppointment(date, "10:00",providers[7],centres[0],patients[0],None,None)
  105. assert(len(self.sys.getAppointment()) == 1)
  106.  
  107.  
  108. class Test_View_Patient_History(object):
  109.  
  110. def setup_method(self):
  111. self.sys = System()
  112. self.sys.readData()
  113.  
  114. def test_view_one_appointment(self):
  115. providers = []
  116. patients = []
  117.  
  118. for u in self.sys._users:
  119. if isinstance(u, Provider):
  120. providers.append(u)
  121. if isinstance(u, Patient):
  122. patients.append(u)
  123.  
  124. centres = self.sys._centres
  125. d = datetime.date(2020,12,11)
  126. date = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  127. e = self.sys.validateDate(date)
  128. reason = "Feeling Feverish"
  129. self.sys.setAppointment(date, "09:00",providers[4],centres[0],patients[0],None,reason)
  130.  
  131. doctorNotes = "1/2 day 50 mg Panadol"
  132. app = self.sys.getAppointment()
  133. app[0].setDoctorNotes(doctorNotes)
  134.  
  135. patients[0].setHistory(app[0])
  136.  
  137. assert(len(self.sys._bookedApps) == 1)
  138. self.sys.removeAppById(app[0].getId())
  139.  
  140. apps = patients[0].getHistory()
  141. assert(len(apps) == 1)
  142. assert(apps[0].getDoctorNotes() == doctorNotes)
  143. assert(apps[0].getTime() == "09:00")
  144. assert(apps[0].getDate() == date)
  145. assert(apps[0].getVisitReason() == reason)
  146.  
  147. def test_view_multiple_appointments(self):
  148. providers = []
  149. patients = []
  150.  
  151. for u in self.sys._users:
  152. if isinstance(u, Provider):
  153. providers.append(u)
  154. if isinstance(u, Patient):
  155. patients.append(u)
  156.  
  157. centres = self.sys._centres
  158.  
  159. d = datetime.date(2020,12,11)
  160. date1 = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  161. e = self.sys.validateDate(date1)
  162. reason0 = "Feeling Feverish"
  163. self.sys.setAppointment(date1, "09:00",providers[4],centres[0],patients[0],None,reason0)
  164. doctorNotes0 = "1/2 day 50 mg Panadol"
  165. app = self.sys.getAppointment()
  166. app[0].setDoctorNotes(doctorNotes0)
  167. patients[0].setHistory(app[0])
  168. self.sys.removeAppById(app[0].getId())
  169.  
  170. d = datetime.date(2020,12,12)
  171. date2 = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  172. e = self.sys.validateDate(date2)
  173. reason1 = "Feeling Sluggish"
  174. self.sys.setAppointment(date2, "10:00",providers[4],centres[0],patients[0],None,reason1)
  175. doctorNotes1 = "2 times a day 100 mg Diazapam"
  176. app = self.sys.getAppointment()
  177. app[0].setDoctorNotes(doctorNotes1)
  178. patients[0].setHistory(app[0])
  179. self.sys.removeAppById(app[0].getId())
  180.  
  181. d = datetime.date(2020,12,13)
  182. date3 = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  183. e = self.sys.validateDate(date3)
  184. reason2 = "Simple Checkup"
  185. self.sys.setAppointment(date3, "08:00",providers[3],centres[0],patients[0],None,reason2)
  186. doctorNotes2 = "Perfectly healthy"
  187. app = self.sys.getAppointment()
  188. app[0].setDoctorNotes(doctorNotes2)
  189. patients[0].setHistory(app[0])
  190. self.sys.removeAppById(app[0].getId())
  191.  
  192. apps = patients[0].getHistory()
  193.  
  194. assert(len(apps) == 3)
  195.  
  196. assert(apps[0].getProvider().getEmail() == providers[4].getEmail())
  197. assert(apps[0].getDoctorNotes() == doctorNotes0)
  198. assert(apps[0].getTime() == "09:00")
  199. assert(apps[0].getDate() == date1)
  200. assert(apps[0].getVisitReason() == reason0)
  201.  
  202. assert(apps[1].getProvider().getEmail() == providers[4].getEmail())
  203. assert(apps[1].getDoctorNotes() == doctorNotes1)
  204. assert(apps[1].getTime() == "10:00")
  205. assert(apps[1].getDate() == date2)
  206. assert(apps[1].getVisitReason() == reason1)
  207.  
  208. assert(apps[2].getProvider().getEmail() == providers[3].getEmail())
  209. assert(apps[2].getDoctorNotes() == doctorNotes2)
  210. assert(apps[2].getTime() == "08:00")
  211. assert(apps[2].getDate() == date3)
  212. assert(apps[2].getVisitReason() == reason2)
  213.  
  214. class Test_Manage_Patient_History(object):
  215.  
  216. # do not change setup_method name
  217. def setup_method(self):
  218. self.sys = System()
  219. self.sys.readData()
  220.  
  221. def test_add_patient_history(self):
  222.  
  223. assert len(self.sys._users) == 12
  224.  
  225. providers = []
  226. patients = []
  227.  
  228. for u in self.sys._users:
  229. if isinstance(u, Provider):
  230. providers.append(u)
  231. if isinstance(u, Patient):
  232. patients.append(u)
  233.  
  234. assert len(patients) == 4
  235. assert len(providers) == 8
  236.  
  237. centres = self.sys._centres
  238.  
  239. assert len(centres) == 6
  240.  
  241. d = datetime.date(2018,11,11)
  242. date = str(d.year) + "-" + str(d.month) + "-" + str(d.day)
  243.  
  244. reason = "Have a cold"
  245.  
  246. self.sys.setAppointment(date,"10:00",providers[0],centres[0],patients[0],None,reason)
  247.  
  248. # Test: Provider adds medical notes for patient
  249. message = "Prescribed pain meds"
  250.  
  251. app = self.sys.getAppointment()
  252. print(len(app))
  253. app[0].setDoctorNotes(message)
  254.  
  255. patients[0].setHistory(app[0])
  256.  
  257. assert(len(self.sys._bookedApps) == 1)
  258. self.sys.removeAppById(app[0].getId())
  259. assert(len(self.sys._bookedApps) == 0)
  260.  
  261. #Test: Provider views patients medical history
  262. apps = patients[0].getHistory()
  263. assert(len(apps) == 1)
  264. assert(apps[0].getDoctorNotes() == message)
  265. assert(apps[0].getTime() == "10:00")
  266. assert(apps[0].getDate() == date)
  267. assert(apps[0].getVisitReason() == reason)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement