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)
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)
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))
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))
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)
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)
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))