def test_transformToHoldsOpenPeriod(self) -> None:
        # Arrange
        ip = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            external_id="123-1",
            admission_date=_DATE_1,
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            TEMPORARY_CUSTODY.value,
            admission_reason_raw_text="PV",
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )

        expected_ip = attr.evolve(self.to_entity(ip))

        ips = [ip]
        expected_ips = [expected_ip]

        # Act
        _update_temporary_holds_helper(ips, self.overrides)

        # Assert
        entity_ips = [self.to_entity(ip) for ip in ips]

        self.assertCountEqual(entity_ips, expected_ips)
    def test_transformToHolds_nonTransferReason(self) -> None:
        # Arrange
        ip = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=_DATE_1,
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            PAROLE_REVOCATION.value,
            admission_reason_raw_text="PV",
            release_date=_DATE_2,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )

        ip_2 = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=_DATE_2,
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            NEW_ADMISSION.value,
            release_date=_DATE_3,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.STATE_PRISON.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )

        expected_ip = attr.evolve(
            self.to_entity(ip),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            TEMPORARY_CUSTODY,
            release_reason=StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY,
        )
        expected_ip_2 = attr.evolve(self.to_entity(ip_2))
        ips = [ip, ip_2]
        expected_ips = [expected_ip, expected_ip_2]

        overrides = self.create_fake_nd_region().get_enum_overrides()

        # Act
        _update_temporary_holds_helper(ips, overrides)

        # Assert
        entity_ips = [self.to_entity(ip) for ip in ips]
        self.assertCountEqual(entity_ips, expected_ips)
示例#3
0
    def test_transformToHoldsOpenPeriod(self):
        # Arrange
        ip = schema.StateIncarcerationPeriod(
            external_id='123-1',
            admission_date=_DATE_1,
            admission_reason=StateIncarcerationPeriodAdmissionReason.TEMPORARY_CUSTODY.value,
            admission_reason_raw_text='PV',
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value
        )

        expected_ip = attr.evolve(self.to_entity(ip))

        ips = [ip]
        expected_ips = [expected_ip]

        overrides = self.create_fake_nd_region().get_enum_overrides()

        # Act
        _update_temporary_holds_helper(ips, overrides)

        # Assert
        entity_ips = [self.to_entity(ip) for ip in ips]

        self.assertCountEqual(entity_ips, expected_ips)
示例#4
0
    def test_transformToHolds_takeAdmissionReasonFromConsecutive(self):
        # Arrange
        # Too long of a time gap between date_1 and date_2 to be
        # considered consecutive
        date_1 = _DATE_1
        date_2 = date_1 + datetime.timedelta(days=3)
        date_3 = date_2 + datetime.timedelta(days=2)
        ip = schema.StateIncarcerationPeriod(
            admission_date=date_1,
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.PAROLE_REVOCATION.value,
            admission_reason_raw_text='PV',
            release_date=date_1,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.value,
            incarceration_type=StateIncarcerationType.EXTERNAL_UNKNOWN.value
        )
        ip_2 = schema.StateIncarcerationPeriod(
            admission_date=date_2,
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.NEW_ADMISSION.value,
            release_date=date_2,
            admission_reason_raw_text='ADM',
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.value,
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
        )
        ip_3 = schema.StateIncarcerationPeriod(
            admission_date=date_3,
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TRANSFER.value,
            admission_reason_raw_text='INT',
            release_date=date_3,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.value,
            incarceration_type=StateIncarcerationType.STATE_PRISON.value,
        )

        expected_ip = attr.evolve(
            self.to_entity(ip),
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TEMPORARY_CUSTODY,
            release_reason=
            StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY)
        expected_ip_2 = attr.evolve(
            self.to_entity(ip_2),
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TEMPORARY_CUSTODY,
            release_reason=
            StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY)
        expected_ip_3 = attr.evolve(
            self.to_entity(ip_3),
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.NEW_ADMISSION)

        ips = [ip_2, ip, ip_3]
        expected_ips = [expected_ip, expected_ip_2, expected_ip_3]

        overrides = self.create_fake_nd_region().get_enum_overrides()

        # Act
        _update_temporary_holds_helper(ips, overrides)

        # Assert
        entity_ips = [self.to_entity(ip) for ip in ips]
        self.assertCountEqual(entity_ips, expected_ips)
示例#5
0
    def test_transformToHolds(self):
        # Arrange
        ip = schema.StateIncarcerationPeriod(
            admission_date=_DATE_1,
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.
            PAROLE_REVOCATION.value,
            admission_reason_raw_text='PV',
            release_date=_DATE_2,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.value,
            incarceration_type=StateIncarcerationType.EXTERNAL_UNKNOWN.value
        )
        ip_2 = schema.StateIncarcerationPeriod(
            admission_date=_DATE_2,
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TRANSFER.value,
            admission_reason_raw_text='INT',
            release_date=_DATE_3,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.value,
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
        )
        ip_3 = schema.StateIncarcerationPeriod(
            admission_date=_DATE_3,
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TRANSFER.value,
            admission_reason_raw_text='INT',
            release_date=_DATE_4,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.value,
            incarceration_type=StateIncarcerationType.STATE_PRISON.value,
        )
        ip_4 = schema.StateIncarcerationPeriod(
            admission_date=_DATE_4,
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TRANSFER.value,
            admission_reason_raw_text='INT',
            release_date=_DATE_5,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.value,
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
        )

        expected_ip = attr.evolve(
            self.to_entity(ip),
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TEMPORARY_CUSTODY,
            release_reason=
            StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY)
        expected_ip_2 = attr.evolve(
            self.to_entity(ip_2),
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.TEMPORARY_CUSTODY,
            release_reason=
            StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY)
        expected_ip_3 = attr.evolve(
            self.to_entity(ip_3),
            admission_reason=
            StateIncarcerationPeriodAdmissionReason.PAROLE_REVOCATION)
        expected_ip_4 = attr.evolve(self.to_entity(ip_4))

        ips = [ip_2, ip_4, ip, ip_3]
        expected_ips = [
            expected_ip, expected_ip_2, expected_ip_3, expected_ip_4]

        overrides = self.create_fake_nd_region().get_enum_overrides()

        # Act
        _update_temporary_holds_helper(ips, overrides)

        # Assert
        entity_ips = [self.to_entity(ip) for ip in ips]
        self.assertCountEqual(entity_ips, expected_ips)
    def test_transformToHolds_takeAdmissionReasonFromConsecutive(self) -> None:
        # Arrange
        # Too long of a time gap between date_1 and date_2 to be
        # considered consecutive
        date_1 = _DATE_1
        date_2 = date_1 + datetime.timedelta(days=3)
        date_3 = date_2 + datetime.timedelta(days=2)
        ip = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=date_1,
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            PAROLE_REVOCATION.value,
            admission_reason_raw_text="PV",
            release_date=date_1,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.EXTERNAL_UNKNOWN.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )
        ip_2 = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=date_2,
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            NEW_ADMISSION.value,
            release_date=date_2,
            admission_reason_raw_text="ADM",
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )
        ip_3 = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=date_3,
            admission_reason=StateIncarcerationPeriodAdmissionReason.TRANSFER.
            value,
            admission_reason_raw_text="INT",
            release_date=date_3,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.STATE_PRISON.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )

        expected_ip = attr.evolve(
            self.to_entity(ip),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            TEMPORARY_CUSTODY,
            release_reason=StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY,
        )
        expected_ip_2 = attr.evolve(
            self.to_entity(ip_2),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            TEMPORARY_CUSTODY,
            release_reason=StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY,
        )
        expected_ip_3 = attr.evolve(
            self.to_entity(ip_3),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            NEW_ADMISSION,
        )

        ips = [ip_2, ip, ip_3]
        expected_ips = [expected_ip, expected_ip_2, expected_ip_3]

        # Act
        _update_temporary_holds_helper(ips, self.overrides)

        # Assert
        entity_ips = [self.to_entity(ip) for ip in ips]
        self.assertCountEqual(entity_ips, expected_ips)
    def test_transformToHolds(self) -> None:
        # Arrange
        ip = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=_DATE_1,
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            PAROLE_REVOCATION.value,
            admission_reason_raw_text="PV",
            release_date=_DATE_2,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.EXTERNAL_UNKNOWN.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )
        ip_2 = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=_DATE_2,
            admission_reason=StateIncarcerationPeriodAdmissionReason.TRANSFER.
            value,
            admission_reason_raw_text="INT",
            release_date=_DATE_3,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )
        ip_3 = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=_DATE_3,
            admission_reason=StateIncarcerationPeriodAdmissionReason.TRANSFER.
            value,
            admission_reason_raw_text="INT",
            release_date=_DATE_4,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.STATE_PRISON.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )
        ip_4 = schema.StateIncarcerationPeriod(
            state_code=_STATE_CODE,
            admission_date=_DATE_4,
            admission_reason=StateIncarcerationPeriodAdmissionReason.TRANSFER.
            value,
            admission_reason_raw_text="INT",
            release_date=_DATE_5,
            release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER.
            value,
            incarceration_type=StateIncarcerationType.COUNTY_JAIL.value,
            status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO,
        )

        expected_ip = attr.evolve(
            self.to_entity(ip),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            TEMPORARY_CUSTODY,
            release_reason=StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY,
        )
        expected_ip_2 = attr.evolve(
            self.to_entity(ip_2),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            TEMPORARY_CUSTODY,
            release_reason=StateIncarcerationPeriodReleaseReason.
            RELEASED_FROM_TEMPORARY_CUSTODY,
        )
        expected_ip_3 = attr.evolve(
            self.to_entity(ip_3),
            admission_reason=StateIncarcerationPeriodAdmissionReason.
            PAROLE_REVOCATION,
        )
        expected_ip_4 = attr.evolve(self.to_entity(ip_4))

        ips = [ip_2, ip_4, ip, ip_3]
        expected_ips = [
            expected_ip, expected_ip_2, expected_ip_3, expected_ip_4
        ]

        # Act
        _update_temporary_holds_helper(ips, self.overrides)

        # Assert
        entity_ips = [self.to_entity(ip) for ip in ips]
        self.assertCountEqual(entity_ips, expected_ips)