예제 #1
0
 def testUpdate(self):
     patient = random_person()
     case = bootstrap_case_from_xml(self, "create_update.xml")
     patient.cases=[case,]
     patient.save()
     # make sure we can get it back from our shared view
     case_back = CommCareCase.get_with_patient("case/all_and_patient", case.case_id)
     self.assertEqual(case.case_id, case_back.case_id)
     self.assertEqual(patient.first_name, case_back.patient.first_name)
     self.assertEqual(patient.last_name, case_back.patient.last_name)
     self.assertEqual(patient.get_id, case_back.patient.get_id)
     self.assertEqual(1, len(patient.cases))
     self.assertEqual(case._id, patient.cases[0]._id)
     
     # update
     case = bootstrap_case_from_xml(self, "update.xml", case.case_id)
     self.assertEqual(patient.get_id, case.patient.get_id)
     case.save()
     
     patient = CPatient.get(patient.get_id)
     self.assertEqual(1, len(patient.cases))
     case_in_patient = patient.cases[0]
     self.assertEqual(case._id, case_in_patient._id)
     
     self.assertEqual(False, case_in_patient.closed)
     self.assertEqual(3, len(case_in_patient.actions))
     new_update_action = case_in_patient.actions[2]
     self.assertEqual(const.CASE_ACTION_UPDATE, new_update_action["action_type"])
     
     # some properties didn't change
     self.assertEqual("123", str(case["someotherprop"]))
     
     # but some should have
     self.assertEqual("abcd", case_in_patient["someprop"])
     self.assertEqual("abcd", new_update_action["someprop"])
     
     # and there are new ones
     self.assertEqual("efgh", case_in_patient["somenewprop"])
     self.assertEqual("efgh", new_update_action["somenewprop"])
     
     # we also changed everything originally in the case
     self.assertEqual("a_new_type", case_in_patient.type)
     self.assertEqual("a_new_type", new_update_action["type"])
     self.assertEqual("a new name", case_in_patient.name)
     self.assertEqual("a new name", new_update_action["name"])        
     self.assertEqual(UPDATE_DATE, case_in_patient.opened_on)
     self.assertEqual(UPDATE_DATE, new_update_action["opened_on"])
     
     # case should have a new modified date
     self.assertEqual(MODIFY_DATE, case.modified_on)
예제 #2
0
 def testReferralOpen(self):
     case = bootstrap_case_from_xml(self, "create.xml")
     case.save()
     self.assertEqual(0, len(case.referrals))
     case = bootstrap_case_from_xml(self, "open_referral.xml", case.case_id)
     self.assertEqual(False, case.closed)
     self.assertEqual(1, len(case.actions))
     self.assertEqual(2, len(case.referrals))
     for referral in case.referrals:
         self.assertTrue(referral.type in ("t1", "t2"))
         self.assertEqual(False, referral.closed)
         self.assertEqual(REFER_DATE, referral.followup_on)
         self.assertEqual(case.modified_on, referral.modified_on)
         self.assertEqual(case.modified_on, referral.opened_on)
예제 #3
0
 def testCreate(self):
     case = bootstrap_case_from_xml(self, "create.xml")
     self._check_static_properties(case)
     self.assertEqual(False, case.closed)
     
     self.assertEqual(1, len(case.actions))
     create_action = case.actions[0]
     self.assertEqual(const.CASE_ACTION_CREATE, create_action.action_type)
     
     self.assertEqual(0, len(case.referrals))
예제 #4
0
 def testCreateThenClose(self):
     case = bootstrap_case_from_xml(self, "create.xml")
     case.save()
             
     # now close it
     case = bootstrap_case_from_xml(self, "close.xml", case.case_id)
     self.assertEqual(True, case.closed)
     
     self.assertEqual(3, len(case.actions))
     update_action = case.actions[1]
     close_action = case.actions[2]
     self.assertEqual(const.CASE_ACTION_UPDATE, update_action.action_type)
     self.assertEqual(const.CASE_ACTION_CLOSE, close_action.action_type)
     
     self.assertEqual("abcde", case["someprop"])
     self.assertEqual("abcde", update_action["someprop"])
     self.assertEqual("case closed", case["someclosedprop"])
     self.assertEqual("case closed", update_action["someclosedprop"])
     
     self.assertEqual(CLOSE_DATE, close_action.date)
     self.assertEqual(CLOSE_DATE, case.modified_on)
     self.assertEqual(0, len(case.referrals))
예제 #5
0
 def testReferralUpdate(self):
     case = bootstrap_case_from_xml(self, "create.xml")
     case.save()
     case = bootstrap_case_from_xml(self, "open_referral.xml", case.case_id)
     case.save()
     case = bootstrap_case_from_xml(self, "update_referral.xml", case.case_id, case.referrals[0].referral_id)
     self.assertEqual(False, case.closed)
     self.assertEqual(1, len(case.actions))
     self.assertEqual(2, len(case.referrals))
     self.assertEqual(MODIFY_2_DATE, case.modified_on)
     for referral in case.referrals:
         self.assertEqual(False, referral.closed)
         if referral.type == "t1":
             self.assertEqual(REFER_DATE_UPDATE, referral.followup_on)
             self.assertEqual(case.modified_on, referral.modified_on)
             self.assertEqual(MODIFY_DATE, referral.opened_on)
         elif referral.type == "t2":
             self.assertEqual(REFER_DATE, referral.followup_on)
             self.assertEqual(MODIFY_DATE, referral.modified_on)
             self.assertEqual(MODIFY_DATE, referral.opened_on)
         else:
             self.fail("Unexpected referral type %s!" % referral.type)
예제 #6
0
 def testCreate(self):
     patient = random_person()
     case = bootstrap_case_from_xml(self, "create.xml")
     patient.cases=[case,]
     patient.save()
     # make sure we can get it back from our shared view
     case_back = CommCareCase.get_with_patient("case/all_and_patient", case.case_id)
     self.assertEqual(case.case_id, case_back.case_id)
     self.assertEqual(patient.first_name, case_back.patient.first_name)
     self.assertEqual(patient.last_name, case_back.patient.last_name)
     self.assertEqual(patient.get_id, case_back.patient.get_id)
     self.assertEqual(1, len(patient.cases))
     self.assertEqual(case._id, patient.cases[0]._id)
예제 #7
0
 def testCreateThenUpdateInSeparateForms(self):
     # recycle our previous test's form
     original_case = bootstrap_case_from_xml(self, "create_update.xml")
     original_case.save()
     
     # we don't need to bother checking all the properties because this is
     # the exact same workflow as above.
     case = bootstrap_case_from_xml(self, "update.xml", original_case.case_id)
     self.assertEqual(False, case.closed)
     
     self.assertEqual(3, len(case.actions))
     new_update_action = case.actions[2]
     self.assertEqual(const.CASE_ACTION_UPDATE, new_update_action.action_type)
     
     # some properties didn't change
     self.assertEqual("123", str(case["someotherprop"]))
     
     # but some should have
     self.assertEqual("abcd", case["someprop"])
     self.assertEqual("abcd", new_update_action["someprop"])
     
     # and there are new ones
     self.assertEqual("efgh", case["somenewprop"])
     self.assertEqual("efgh", new_update_action["somenewprop"])
     
     # we also changed everything originally in the case
     self.assertEqual("a_new_type", case.type)
     self.assertEqual("a_new_type", new_update_action.type)
     self.assertEqual("a new name", case.name)
     self.assertEqual("a new name", new_update_action.name)        
     self.assertEqual(UPDATE_DATE, case.opened_on)
     self.assertEqual(UPDATE_DATE, new_update_action.opened_on)
     
     # case should have a new modified date
     self.assertEqual(MODIFY_DATE, case.modified_on)
     
     self.assertEqual(0, len(case.referrals))