def testParseStateIncarcerationPeriod_temporaryCustody_overwriteAdmission( self): # Arrange ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod( status='NOT_IN_CUSTODY', incarceration_type='STATE_PRISON', admission_reason='PAROLE_REVOCATION', release_reason='RELEASED_FROM_TEMPORARY_CUSTODY', admission_date='1/2/2111', release_date='2/2/2112', state_code='us_nd') # Act incarceration_builder = entities.StateIncarcerationPeriod.builder() state_incarceration_period.copy_fields_to_builder( incarceration_builder, ingest_incarceration, _EMPTY_METADATA) result = incarceration_builder.build() # Assert expected_result = entities.StateIncarcerationPeriod.new_with_defaults( status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY, status_raw_text='NOT_IN_CUSTODY', incarceration_type=StateIncarcerationType.STATE_PRISON, incarceration_type_raw_text='STATE_PRISON', admission_reason=StateIncarcerationPeriodAdmissionReason. TEMPORARY_CUSTODY, admission_reason_raw_text='PAROLE_REVOCATION', release_reason=StateIncarcerationPeriodReleaseReason. RELEASED_FROM_TEMPORARY_CUSTODY, release_reason_raw_text='RELEASED_FROM_TEMPORARY_CUSTODY', admission_date=date(year=2111, month=1, day=2), release_date=date(year=2112, month=2, day=2), state_code='US_ND') self.assertEqual(result, expected_result)
def testParseStateIncarcerationPeriod(self): # Arrange ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod( status="NOT_IN_CUSTODY", incarceration_type="STATE_PRISON", facility_security_level="MEDIUM", admission_reason="PAROLE_REVOCATION", projected_release_reason="CONDITIONAL_RELEASE", release_reason="SERVED", state_incarceration_period_id="INCARCERATION_ID", specialized_purpose_for_incarceration="SHOCK INCARCERATION", admission_date="1/2/2111", release_date="2/2/2112", state_code="us_nd", county_code="bis", facility="The Prison", housing_unit="CB4", custodial_authority="STATE_PRISON", ) # Act incarceration_builder = entities.StateIncarcerationPeriod.builder() state_incarceration_period.copy_fields_to_builder( incarceration_builder, ingest_incarceration, _EMPTY_METADATA) result = incarceration_builder.build() # Assert expected_result = entities.StateIncarcerationPeriod( status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY, status_raw_text="NOT_IN_CUSTODY", incarceration_type=StateIncarcerationType.STATE_PRISON, incarceration_type_raw_text="STATE_PRISON", facility_security_level=StateIncarcerationFacilitySecurityLevel. MEDIUM, facility_security_level_raw_text="MEDIUM", admission_reason=StateIncarcerationPeriodAdmissionReason. PAROLE_REVOCATION, admission_reason_raw_text="PAROLE_REVOCATION", projected_release_reason=StateIncarcerationPeriodReleaseReason. CONDITIONAL_RELEASE, projected_release_reason_raw_text="CONDITIONAL_RELEASE", release_reason=StateIncarcerationPeriodReleaseReason. SENTENCE_SERVED, release_reason_raw_text="SERVED", specialized_purpose_for_incarceration= StateSpecializedPurposeForIncarceration.SHOCK_INCARCERATION, specialized_purpose_for_incarceration_raw_text= "SHOCK INCARCERATION", external_id="INCARCERATION_ID", admission_date=date(year=2111, month=1, day=2), release_date=date(year=2112, month=2, day=2), state_code="US_ND", county_code="BIS", facility="THE PRISON", housing_unit="CB4", custodial_authority=StateCustodialAuthority.STATE_PRISON, custodial_authority_raw_text="STATE_PRISON", ) self.assertEqual(result, expected_result)
def testParseStateIncarcerationPeriod_inferStatus_releaseDate(self): # Arrange ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod( incarceration_type="STATE_PRISON", admission_date="1/2/2111", release_date="1/2/2112", state_code="us_nd", ) # Act incarceration_builder = entities.StateIncarcerationPeriod.builder() state_incarceration_period.copy_fields_to_builder( incarceration_builder, ingest_incarceration, _EMPTY_METADATA) result = incarceration_builder.build() # Assert expected_result = entities.StateIncarcerationPeriod.new_with_defaults( status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY, incarceration_type=StateIncarcerationType.STATE_PRISON, incarceration_type_raw_text="STATE_PRISON", admission_date=date(year=2111, month=1, day=2), release_date=date(year=2112, month=1, day=2), state_code="US_ND", ) self.assertEqual(result, expected_result)
def testParseStateIncarcerationPeriod(self): # Arrange ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod( status='NOT_IN_CUSTODY', incarceration_type='STATE_PRISON', facility_security_level='MEDIUM', admission_reason='PAROLE_REVOCATION', projected_release_reason='CONDITIONAL_RELEASE', release_reason='SERVED', state_incarceration_period_id='INCARCERATION_ID', specialized_purpose_for_incarceration='SHOCK INCARCERATION', admission_date='1/2/2111', release_date='2/2/2112', state_code='us_nd', county_code='bis', facility='The Prison', housing_unit='CB4') # Act incarceration_builder = entities.StateIncarcerationPeriod.builder() state_incarceration_period.copy_fields_to_builder( incarceration_builder, ingest_incarceration, _EMPTY_METADATA) result = incarceration_builder.build() # Assert expected_result = entities.StateIncarcerationPeriod( status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY, status_raw_text='NOT_IN_CUSTODY', incarceration_type=StateIncarcerationType.STATE_PRISON, incarceration_type_raw_text='STATE_PRISON', facility_security_level=StateIncarcerationFacilitySecurityLevel. MEDIUM, facility_security_level_raw_text='MEDIUM', admission_reason=StateIncarcerationPeriodAdmissionReason. PAROLE_REVOCATION, admission_reason_raw_text='PAROLE_REVOCATION', projected_release_reason=StateIncarcerationPeriodReleaseReason. CONDITIONAL_RELEASE, projected_release_reason_raw_text='CONDITIONAL_RELEASE', release_reason=StateIncarcerationPeriodReleaseReason. SENTENCE_SERVED, release_reason_raw_text='SERVED', specialized_purpose_for_incarceration= StateSpecializedPurposeForIncarceration.SHOCK_INCARCERATION, specialized_purpose_for_incarceration_raw_text= 'SHOCK INCARCERATION', external_id='INCARCERATION_ID', admission_date=date(year=2111, month=1, day=2), release_date=date(year=2112, month=2, day=2), state_code='US_ND', county_code='BIS', facility='THE PRISON', housing_unit='CB4', ) self.assertEqual(result, expected_result)
def _convert_incarceration_period( self, ingest_incarceration_period: StateIncarcerationPeriod) \ -> entities.StateIncarcerationPeriod: """Converts an ingest_info proto StateIncarcerationPeriod to a persistence entity.""" incarceration_period_builder = \ entities.StateIncarcerationPeriod.builder() state_incarceration_period.copy_fields_to_builder( incarceration_period_builder, ingest_incarceration_period, self.metadata) converted_incidents = [ self._convert_incarceration_incident( self.incarceration_incidents[incident_id]) for incident_id in ingest_incarceration_period.state_incarceration_incident_ids ] incarceration_period_builder.incarceration_incidents = \ converted_incidents converted_decisions = [ self._convert_parole_decision(self.parole_decisions[decision_id]) for decision_id in ingest_incarceration_period.state_parole_decision_ids ] incarceration_period_builder.parole_decisions = converted_decisions converted_assessments = [ self._convert_assessment(self.assessments[assessment_id]) for assessment_id in ingest_incarceration_period.state_assessment_ids ] incarceration_period_builder.assessments = converted_assessments converted_program_assignments = [ self._convert_program_assignment( self.program_assignments[assignment_id]) for assignment_id in ingest_incarceration_period.state_program_assignment_ids ] incarceration_period_builder.program_assignments = \ converted_program_assignments if ingest_incarceration_period.source_supervision_violation_response_id: converted_source_violation_response = \ self._convert_supervision_violation_response( self.violation_responses[ ingest_incarceration_period. source_supervision_violation_response_id]) incarceration_period_builder.\ source_supervision_violation_response = \ converted_source_violation_response return incarceration_period_builder.build()
def testParseStateIncarcerationPeriod_inferStatus_noDates(self): # Arrange ingest_incarceration = ingest_info_pb2.StateIncarcerationPeriod( incarceration_type='STATE_PRISON', state_code='us_nd') # Act incarceration_builder = entities.StateIncarcerationPeriod.builder() state_incarceration_period.copy_fields_to_builder( incarceration_builder, ingest_incarceration, _EMPTY_METADATA) result = incarceration_builder.build() # Assert expected_result = entities.StateIncarcerationPeriod.new_with_defaults( status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO, incarceration_type=StateIncarcerationType.STATE_PRISON, incarceration_type_raw_text='STATE_PRISON', state_code='US_ND') self.assertEqual(result, expected_result)
def _convert_incarceration_period( self, ingest_incarceration_period: StateIncarcerationPeriod) \ -> entities.StateIncarcerationPeriod: """Converts an ingest_info proto StateIncarcerationPeriod to a persistence entity.""" incarceration_period_builder = \ entities.StateIncarcerationPeriod.builder() state_incarceration_period.copy_fields_to_builder( incarceration_period_builder, ingest_incarceration_period, self.metadata) converted_incidents = [ self._convert_incarceration_incident( self.incarceration_incidents[incident_id]) for incident_id in ingest_incarceration_period.state_incarceration_incident_ids ] incarceration_period_builder.incarceration_incidents = \ converted_incidents converted_decisions = [ self._convert_parole_decision(self.parole_decisions[decision_id]) for decision_id in ingest_incarceration_period.state_parole_decision_ids ] incarceration_period_builder.parole_decisions = converted_decisions converted_assessments = [ self._convert_assessment(self.assessments[assessment_id]) for assessment_id in ingest_incarceration_period.state_assessment_ids ] incarceration_period_builder.assessments = converted_assessments return incarceration_period_builder.build()