Exemple #1
0
    def test_revoked_supervision_periods_if_revocation_occurred_with_general_purpose_US_ID(
        self, ) -> None:
        incarceration_period = StateIncarcerationPeriod.new_with_defaults(
            incarceration_period_id=222,
            external_id="ip2",
            state_code="US_ID",
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            admission_date=date(2017, 5, 17),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            RETURN_FROM_SUPERVISION,
            release_date=date(2019, 5, 29),
            release_reason=ReleaseReason.SENTENCE_SERVED,
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.GENERAL,
        )

        supervision_periods: List[StateSupervisionPeriod] = []

        (
            admission_is_revocation,
            revoked_periods,
        ) = state_calculation_config_manager.revoked_supervision_periods_if_revocation_occurred(
            incarceration_period.state_code,
            incarceration_period,
            supervision_periods,
            None,
        )

        self.assertTrue(admission_is_revocation)
        self.assertEqual([], revoked_periods)
Exemple #2
0
    def test_revoked_supervision_periods_if_revocation_occurred_US_ID_InvestigationSupervision(
            self):
        supervision_period = StateSupervisionPeriod.new_with_defaults(
            supervision_period_id=111,
            external_id='sp1',
            status=StateSupervisionPeriodStatus.TERMINATED,
            state_code='US_ID',
            start_date=date(2017, 3, 5),
            termination_date=date(2017, 5, 9),
            supervision_period_supervision_type=
            StateSupervisionPeriodSupervisionType.INVESTIGATION)

        incarceration_period = StateIncarcerationPeriod.new_with_defaults(
            incarceration_period_id=222,
            external_id='ip2',
            state_code='US_ID',
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            admission_date=date(2017, 5, 9),
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.GENERAL)

        supervision_periods = [supervision_period]

        admission_is_revocation, revoked_periods = \
            state_calculation_config_manager.revoked_supervision_periods_if_revocation_occurred(
                incarceration_period, supervision_periods, None
            )

        self.assertFalse(admission_is_revocation)
        self.assertEqual([], revoked_periods)
Exemple #3
0
    def test_revoked_supervision_periods_if_revocation_did_not_occur_with_treatment_transfer_US_ID(
        self, ) -> None:
        supervision_period = StateSupervisionPeriod.new_with_defaults(
            state_code="US_ID",
            start_date=date(2017, 1, 1),
            termination_date=date(2017, 5, 17),
            supervision_period_supervision_type=
            StateSupervisionPeriodSupervisionType.PAROLE,
            status=StateSupervisionPeriodStatus.PRESENT_WITHOUT_INFO,
        )

        treatment_period = StateIncarcerationPeriod.new_with_defaults(
            incarceration_period_id=222,
            external_id="ip2",
            state_code="US_ID",
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            admission_date=date(2017, 5, 17),
            admission_reason=AdmissionReason.RETURN_FROM_SUPERVISION,
            release_date=date(2017, 5, 29),
            release_reason=ReleaseReason.TRANSFER,
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.TREATMENT_IN_PRISON,
        )

        incarceration_period = StateIncarcerationPeriod.new_with_defaults(
            incarceration_period_id=222,
            external_id="ip2",
            state_code="US_ID",
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            admission_date=date(2017, 5, 29),
            admission_reason=AdmissionReason.TRANSFER,
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.GENERAL,
        )

        supervision_periods = [supervision_period]

        (
            admission_is_revocation,
            revoked_periods,
        ) = state_calculation_config_manager.revoked_supervision_periods_if_revocation_occurred(
            incarceration_period.state_code,
            incarceration_period,
            supervision_periods,
            treatment_period,
        )

        self.assertFalse(admission_is_revocation)
        self.assertEqual([], revoked_periods)
Exemple #4
0
    def test_revoked_supervision_periods_if_revocation_occurred_US_ID_NoRecentSupervision(
        self, ) -> None:
        supervision_period = StateSupervisionPeriod.new_with_defaults(
            supervision_period_id=111,
            external_id="sp1",
            status=StateSupervisionPeriodStatus.TERMINATED,
            state_code="US_ID",
            start_date=date(2017, 3, 5),
            termination_date=date(2017, 5, 9),
            supervision_period_supervision_type=
            StateSupervisionPeriodSupervisionType.PROBATION,
        )

        # Incarceration period that occurred more than SUPERVISION_PERIOD_PROXIMITY_MONTH_LIMIT months after
        # the most recent supervision period ended

        supervision_termination_date = supervision_period.termination_date
        if not supervision_termination_date:
            self.fail("Found None supervision period termination date.")
        incarceration_period = StateIncarcerationPeriod.new_with_defaults(
            incarceration_period_id=222,
            external_id="ip2",
            state_code="US_ID",
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            admission_date=supervision_termination_date +
            relativedelta(months=SUPERVISION_PERIOD_PROXIMITY_MONTH_LIMIT + 1),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            RETURN_FROM_SUPERVISION,
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.GENERAL,
        )

        supervision_periods = [supervision_period]

        (
            admission_is_revocation,
            revoked_periods,
        ) = state_calculation_config_manager.revoked_supervision_periods_if_revocation_occurred(
            incarceration_period.state_code,
            incarceration_period,
            supervision_periods,
            None,
        )

        self.assertTrue(admission_is_revocation)
        self.assertEqual([], revoked_periods)
Exemple #5
0
    def test_revoked_supervision_periods_if_revocation_occurred_with_treatment_US_ID(
            self):
        incarceration_period = StateIncarcerationPeriod.new_with_defaults(
            incarceration_period_id=222,
            external_id='ip2',
            state_code='US_ID',
            incarceration_type=StateIncarcerationType.STATE_PRISON,
            status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY,
            admission_date=date(2017, 5, 17),
            admission_reason=AdmissionReason.RETURN_FROM_SUPERVISION,
            release_date=date(2019, 5, 29),
            release_reason=ReleaseReason.SENTENCE_SERVED,
            specialized_purpose_for_incarceration=
            StateSpecializedPurposeForIncarceration.TREATMENT_IN_PRISON)

        supervision_periods = []

        admission_is_revocation, revoked_periods = \
            state_calculation_config_manager.revoked_supervision_periods_if_revocation_occurred(
                incarceration_period, supervision_periods, None
            )

        self.assertTrue(admission_is_revocation)
        self.assertEqual([], revoked_periods)