def make_checkin_case(self, properties=None): properties = properties if properties is not None else {"username": self.mobile_worker.raw_username} checkin_case = CaseFactory(self.domain).create_case( case_type="checkin", owner_id=self.mobile_worker.get_id, update=properties, ) send_to_elasticsearch( "case_search", transform_case_for_elasticsearch(checkin_case.to_json()) ) self.es.indices.refresh(CASE_SEARCH_INDEX_INFO.index) return checkin_case
class DeactivatedMobileWorkersTest(BaseCaseRuleTest): def setUp(self): super().setUp() delete_all_users() self.domain_obj = create_domain(self.domain) enable_usercase(self.domain) with trap_extra_setup(ConnectionError): self.es = get_es_new() initialize_index_and_mapping(self.es, CASE_SEARCH_INDEX_INFO) username = normalize_username("mobile_worker_1", self.domain) self.mobile_worker = CommCareUser.create(self.domain, username, "123", None, None) sync_user_cases(self.mobile_worker) self.checkin_case = CaseFactory(self.domain).create_case( case_type="checkin", owner_id=self.mobile_worker.get_id, update={"username": self.mobile_worker.raw_username}, ) send_to_elasticsearch( "case_search", transform_case_for_elasticsearch(self.checkin_case.to_json())) self.es.indices.refresh(CASE_SEARCH_INDEX_INFO.index) self.case_accessor = CaseAccessors(self.domain) def tearDown(self): FormProcessorTestUtils.delete_all_cases() delete_all_users() ensure_index_deleted(CASE_SEARCH_INDEX_INFO.index) super().tearDown() def test_associated_usercase_closed(self): usercase_ids = self.case_accessor.get_case_ids_in_domain( type=USERCASE_TYPE) for usercase_id in usercase_ids: CaseFactory(self.domain).close_case(usercase_id) usercase = self.case_accessor.get_case(usercase_id) send_to_elasticsearch( "case_search", transform_case_for_elasticsearch(usercase.to_json())) self.es.indices.refresh(CASE_SEARCH_INDEX_INFO.index) self.assertTrue(associated_user_cases_closed(self.checkin_case, None)) def test_custom_action(self): rule = create_empty_rule( self.domain, AutomaticUpdateRule.WORKFLOW_CASE_UPDATE, case_type="checkin", ) case_properties = { "assigned_to_primary_checkin_case_id": self.checkin_case.case_id, "is_assigned_primary": "foo", "assigned_to_primary_name": "bar", "assigned_to_primary_username": "******", } patient_case = CaseFactory(self.domain).create_case( case_type="patient", owner_id=self.mobile_worker.get_id, update=case_properties, ) other_patient_case = CaseFactory(self.domain).create_case( case_type="patient", owner_id=self.mobile_worker.get_id, update={"assigned_to_primary_checkin_case_id": "123"}, ) other_case = CaseFactory(self.domain).create_case( case_type="other", owner_id=self.mobile_worker.get_id, update={ "assigned_to_primary_checkin_case_id": self.checkin_case.case_id }, ) for case in [patient_case, other_patient_case, other_case]: send_to_elasticsearch( "case_search", transform_case_for_elasticsearch(case.to_json())) self.es.indices.refresh(CASE_SEARCH_INDEX_INFO.index) close_cases_assigned_to_checkin(self.checkin_case, rule) self.assertTrue( self.case_accessor.get_case(self.checkin_case.case_id).closed) patient_case = self.case_accessor.get_case(patient_case.case_id) self.assertTrue(patient_case.closed) for prop in case_properties: self.assertEqual(patient_case.get_case_property(prop), "") other_case = self.case_accessor.get_case(other_case.case_id) self.assertFalse(other_case.closed) self.assertEqual( other_case.get_case_property( "assigned_to_primary_checkin_case_id"), self.checkin_case.case_id, ) other_patient_case = self.case_accessor.get_case( other_patient_case.case_id) self.assertFalse(other_patient_case.closed) self.assertEqual( other_patient_case.get_case_property( "assigned_to_primary_checkin_case_id"), "123", )