def test_parse_does_not_return_internal_unknown_for_tak026_incarceration_in_statuses( self, ) -> None: """Loops over a file with every single combination of TAK026 incarceration in statuses (*0I*) that are present on cycles that started after 2000 and ensures we have a mapping for those statuses. """ fixture_path = direct_ingest_fixture_path( region_code=self.region_code, file_name="tak026_incarceration_admission_status_combos.txt", ) with open(fixture_path, "r") as f: while True: status_list_str = f.readline().strip() if not status_list_str: break admission_reason = incarceration_period_admission_reason_mapper( status_list_str) self.assertIsNotNone(admission_reason) self.assertIsInstance(admission_reason, StateIncarcerationPeriodAdmissionReason) self.assertNotEqual( admission_reason, StateIncarcerationPeriodAdmissionReason.INTERNAL_UNKNOWN, f"No mapping for [{status_list_str}]", )
def test_supervision_termination_reason_mapper(self) -> None: fixture_path = direct_ingest_fixture_path( region_code=self.region_code, file_name="supervision_termination_reason_raw_text.csv", ) enum_overrides = UsIdController.generate_enum_overrides() actual_mappings = set() with open(fixture_path, "r") as f: while True: raw_text_value = f.readline().strip() if not raw_text_value: break mapping = StateSupervisionPeriodTerminationReason.parse( raw_text_value, enum_overrides) actual_mappings.add(mapping) expected_mappings = { StateSupervisionPeriodTerminationReason.ABSCONSION, StateSupervisionPeriodTerminationReason.COMMUTED, StateSupervisionPeriodTerminationReason.DEATH, StateSupervisionPeriodTerminationReason.DISCHARGE, StateSupervisionPeriodTerminationReason.EXPIRATION, StateSupervisionPeriodTerminationReason.PARDONED, StateSupervisionPeriodTerminationReason.RETURN_FROM_ABSCONSION, StateSupervisionPeriodTerminationReason.RETURN_TO_INCARCERATION, StateSupervisionPeriodTerminationReason.TRANSFER_OUT_OF_STATE, StateSupervisionPeriodTerminationReason.TRANSFER_WITHIN_STATE, } self.assertEqual(actual_mappings, expected_mappings)
def test_supervision_level_parsing(self) -> None: enum_overrides = UsPaController.generate_enum_overrides() fixture_path = direct_ingest_fixture_path( region_code=self.region_code, file_name="supervision_level_raw_text.csv" ) with open(fixture_path, "r") as f: while True: supervision_level_str = f.readline().strip() if not supervision_level_str: break _ = StateSupervisionLevel.parse(supervision_level_str, enum_overrides)
def test_incarceration_period_purpose_mapper(self) -> None: fixture_path = direct_ingest_fixture_path( region_code=self.region_code, file_name="purpose_raw_text.csv" ) with open(fixture_path, "r") as f: while True: purpose_str = f.readline().strip() if not purpose_str: break mapping = incarceration_period_purpose_mapper(purpose_str) self.assertIsNotNone(mapping) self.assertIsInstance(mapping, StateSpecializedPurposeForIncarceration)
def test_incarceration_period_release_reason_mapper(self) -> None: fixture_path = direct_ingest_fixture_path( region_code=self.region_code, file_name="release_reason_raw_text.csv" ) with open(fixture_path, "r") as f: while True: release_reason_str = f.readline().strip() if not release_reason_str: break mapping = incarceration_period_release_reason_mapper(release_reason_str) self.assertIsNotNone(mapping) self.assertIsInstance(mapping, StateIncarcerationPeriodReleaseReason)
def test_supervision_contact_typ_mapper(self) -> None: fixture_path = direct_ingest_fixture_path( region_code=self.region_code, file_name="supervision_contacts_type_raw_text.csv", ) with open(fixture_path, "r") as f: while True: supervision_contact_type_str = f.readline().strip() if not supervision_contact_type_str: break mapping = supervision_contact_type_mapper(supervision_contact_type_str) self.assertIsNotNone(mapping) self.assertIsInstance(mapping, StateSupervisionContactType)
def test_parse_incarceration_period_release_reasons(self, ) -> None: """Loops over a file with every single combination of release reason raw texts that are present and ensures they all parse.""" enum_overrides = UsMoController.generate_enum_overrides() fixture_path = direct_ingest_fixture_path( region_code=self.region_code, file_name="incarceration_period_release_reason_raw_text.csv", ) with open(fixture_path, "r") as f: while True: release_reason_str = f.readline().strip() if not release_reason_str: break release_reason = StateIncarcerationPeriodReleaseReason.parse( release_reason_str, enum_overrides) self.assertIsNotNone(release_reason) self.assertIsInstance(release_reason, StateIncarcerationPeriodReleaseReason)