def test_parse_supervision_termination_reason_single_has_mapping(self): # Status meanings and mappings, in relative order: # - Suicide-Institution -> DEATH input_statuses = '99O9020' reason = supervision_period_termination_reason_mapper(input_statuses) self.assertEqual(StateSupervisionPeriodTerminationReason.DEATH, reason)
def test_parse_supervision_termination_reason_empty(self): input_statuses = '' reason = supervision_period_termination_reason_mapper(input_statuses) self.assertEqual( StateSupervisionPeriodTerminationReason.TRANSFER_WITHIN_STATE, reason)
def test_parse_supervision_termination_reason_single_has_no_mapping(self): # Status meanings and mappings, in relative order: # - unknown, unmapped input_statuses = '40I0000' reason = supervision_period_termination_reason_mapper(input_statuses) self.assertEqual( StateSupervisionPeriodTerminationReason.INTERNAL_UNKNOWN, reason)
def test_parse_supervision_termination_reason_multiple_all_unmapped(self): # Status meanings and mappings, in relative order: # - unknown, unmapped # - unknown, unmapped input_statuses = '12O3456 56I7890' reason = supervision_period_termination_reason_mapper(input_statuses) self.assertEqual( StateSupervisionPeriodTerminationReason.INTERNAL_UNKNOWN, reason)
def test_parse_supervision_termination_reason_multiple_one_is_mapped(self): # Status meanings and mappings, in relative order: # - unknown, unmapped # - Field Commutation -> DISCHARGE input_statuses = '40I0000 99O1025' reason = supervision_period_termination_reason_mapper(input_statuses) self.assertEqual(StateSupervisionPeriodTerminationReason.DISCHARGE, reason)
def test_parse_supervision_termination_reason_transfer_within_state( self) -> None: input_statuses = normalize( StateSupervisionPeriodTerminationReason.TRANSFER_WITHIN_STATE. value, remove_punctuation=True, ) reason = supervision_period_termination_reason_mapper(input_statuses) self.assertEqual( StateSupervisionPeriodTerminationReason.TRANSFER_WITHIN_STATE, reason)
def test_parse_supervision_termination_reason_rank_statuses(self) -> None: # Status meanings and mappings, in relative order: # - Offender re-engaged -> RETURN_FROM_ABSCONSCION # - Parole discharge -> DISCHARGE (highest rank) # - unknown, unmapped input_statuses = "65N9500 99O2010 40O1010" reason = supervision_period_termination_reason_mapper(input_statuses) # 99O statuses ranked higher than the others self.assertEqual(StateSupervisionPeriodTerminationReason.DISCHARGE, reason)
def test_parse_supervision_termination_reason_two_statuses_same_rank(self): # Status meanings and mappings, in relative order: # - Parole Ret-No Violation -> REVOCATION # - Offender declared absconder -> ABSCONSION input_statuses = '40I1021 65L9100' reason = supervision_period_termination_reason_mapper(input_statuses) # REVOCATION is chosen as the termination reason because statuses are evaluated alphabetically when they tie in # rank self.assertEqual(StateSupervisionPeriodTerminationReason.REVOCATION, reason)
def test_parse_supervision_termination_reason_empty(self) -> None: input_statuses = "" with self.assertRaises(ValueError): _ = supervision_period_termination_reason_mapper(input_statuses)