Пример #1
0
 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
Пример #2
0
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",
        )