def test_hasDefaultEnum(self): entity = entities.StateIncarcerationSentence.new_with_defaults( incarceration_type=entities.StateIncarcerationType.STATE_PRISON) db_entity = converter.convert_entity_to_schema_object(entity) self.assertTrue( entity.has_default_enum( 'incarceration_type', entities.StateIncarcerationType.STATE_PRISON)) entity.incarceration_type_raw_text = 'PRISON' self.assertFalse(entity.has_default_enum( 'incarceration_type', entities.StateIncarcerationType.STATE_PRISON)) entity.incarceration_type = entities.StateIncarcerationType.COUNTY_JAIL entity.incarceration_type_raw_text = None self.assertFalse(entity.has_default_enum( 'incarceration_type', entities.StateIncarcerationType.STATE_PRISON)) self.assertTrue( db_entity.has_default_enum( 'incarceration_type', entities.StateIncarcerationType.STATE_PRISON)) db_entity.incarceration_type_raw_text = 'PRISON' self.assertFalse(db_entity.has_default_enum( 'incarceration_type', entities.StateIncarcerationType.STATE_PRISON)) db_entity.incarceration_type = \ entities.StateIncarcerationType.COUNTY_JAIL.value db_entity.incarceration_type_raw_text = None self.assertFalse(entity.has_default_enum( 'incarceration_type', entities.StateIncarcerationType.STATE_PRISON))
def test_getFieldAsList(self) -> None: fine = entities.StateFine.new_with_defaults( state_code="us_nc", external_id="ex1", status=StateFineStatus.PRESENT_WITHOUT_INFO, ) fine_2 = entities.StateFine.new_with_defaults( state_code="us_nc", external_id="ex2", status=StateFineStatus.PRESENT_WITHOUT_INFO, ) entity = entities.StateSentenceGroup.new_with_defaults( state_code="us_nc", status=StateSentenceStatus.PRESENT_WITHOUT_INFO, fines=[fine, fine_2], ) db_entity = converter.convert_entity_to_schema_object(entity) self.assertCountEqual(["us_nc"], entity.get_field_as_list("state_code")) self.assertCountEqual([fine, fine_2], entity.get_field_as_list("fines")) self.assertCountEqual( [], entity.get_field_as_list("supervision_sentences")) self.assertCountEqual(["us_nc"], db_entity.get_field_as_list("state_code")) self.assertCountEqual( [fine, fine_2], converter.convert_schema_objects_to_entity( db_entity.get_field_as_list("fines"), populate_back_edges=False), ) self.assertCountEqual( [], db_entity.get_field_as_list("supervision_sentences"))
def test_clearField(self) -> None: fine = entities.StateFine.new_with_defaults( state_code="us_nc", external_id="ex1", status=StateFineStatus.PRESENT_WITHOUT_INFO, ) fine_2 = entities.StateFine.new_with_defaults( state_code="us_nc", external_id="ex2", status=StateFineStatus.PRESENT_WITHOUT_INFO, ) entity = entities.StateSentenceGroup.new_with_defaults( state_code="us_nc", status=StateSentenceStatus.PRESENT_WITHOUT_INFO, fines=[fine, fine_2], ) db_entity = converter.convert_entity_to_schema_object(entity) if not isinstance(db_entity, schema.StateSentenceGroup): self.fail(f"Unexpected type for db_entity: {[db_entity]}.") entity.clear_field("state_code") entity.clear_field("fines") self.assertIsNone(entity.state_code) self.assertCountEqual([], entity.fines) db_entity.clear_field("state_code") db_entity.clear_field("fines") self.assertIsNone(db_entity.state_code) self.assertCountEqual([], db_entity.fines)
def test_setFieldFromList_raises(self): entity = entities.StateSentenceGroup.new_with_defaults() db_entity = converter.convert_entity_to_schema_object(entity) with pytest.raises(ValueError): entity.set_field_from_list('state_code', ['us_nc', 'us_sc']) with pytest.raises(ValueError): db_entity.set_field_from_list('state_code', ['us_nc', 'us_sc'])
def test_setFieldFromList_raises(self) -> None: entity = entities.StateSentenceGroup.new_with_defaults( state_code="US_XX", status=StateSentenceStatus.PRESENT_WITHOUT_INFO) db_entity = converter.convert_entity_to_schema_object(entity) with pytest.raises(ValueError): entity.set_field_from_list("state_code", ["us_nc", "us_sc"]) with pytest.raises(ValueError): db_entity.set_field_from_list("state_code", ["us_nc", "us_sc"])
def test_hasDefaultStatus(self): entity = entities.StateSentenceGroup.new_with_defaults( status=entities.StateSentenceStatus.PRESENT_WITHOUT_INFO) db_entity = converter.convert_entity_to_schema_object(entity) self.assertTrue(entity.has_default_status()) entity.status = entities.StateSentenceStatus.SERVING self.assertFalse(entity.has_default_status()) self.assertTrue(db_entity.has_default_status()) db_entity.status = entities.StateSentenceStatus.SERVING.value self.assertFalse(db_entity.has_default_status())
def test_getField(self): entity = entities.StateSentenceGroup.new_with_defaults( state_code='us_nc', county_code=None) db_entity = converter.convert_entity_to_schema_object(entity) self.assertEqual('us_nc', entity.get_field('state_code')) self.assertEqual('us_nc', db_entity.get_field('state_code')) with pytest.raises(ValueError): entity.get_field('country_code') with pytest.raises(ValueError): db_entity.get_field('country_code')
def test_setFieldFromList(self): entity = entities.StateSentenceGroup.new_with_defaults() fine = entities.StateFine.new_with_defaults(external_id='ex1') fine_2 = entities.StateFine.new_with_defaults(external_id='ex2') db_entity = converter.convert_entity_to_schema_object(entity) db_fine = converter.convert_entity_to_schema_object(fine) db_fine_2 = converter.convert_entity_to_schema_object(fine_2) entity.set_field_from_list('state_code', ['us_nc']) self.assertEqual('us_nc', entity.state_code) db_entity.set_field_from_list('state_code', ['us_nc']) self.assertEqual('us_nc', db_entity.state_code) entity.set_field_from_list('fines', [fine, fine_2]) self.assertCountEqual([fine, fine_2], entity.fines) db_entity.set_field_from_list('fines', [db_fine, db_fine_2]) self.assertCountEqual([fine, fine_2], converter.convert_schema_objects_to_entity( db_entity.fines, populate_back_edges=False))
def test_setFieldFromList(self) -> None: entity = entities.StateSentenceGroup.new_with_defaults( state_code="US_XX", status=StateSentenceStatus.PRESENT_WITHOUT_INFO) fine = entities.StateFine.new_with_defaults( state_code="US_XX", external_id="ex1", status=StateFineStatus.PRESENT_WITHOUT_INFO, ) fine_2 = entities.StateFine.new_with_defaults( state_code="US_XX", external_id="ex2", status=StateFineStatus.PRESENT_WITHOUT_INFO, ) db_entity = converter.convert_entity_to_schema_object(entity) if not isinstance(db_entity, schema.StateSentenceGroup): self.fail(f"Unexpected type for db_entity: {[db_entity]}.") db_fine = converter.convert_entity_to_schema_object(fine) db_fine_2 = converter.convert_entity_to_schema_object(fine_2) entity.set_field_from_list("state_code", ["us_nc"]) self.assertEqual("us_nc", entity.state_code) db_entity.set_field_from_list("state_code", ["us_nc"]) self.assertEqual("us_nc", db_entity.state_code) entity.set_field_from_list("fines", [fine, fine_2]) self.assertCountEqual([fine, fine_2], entity.fines) db_entity.set_field_from_list("fines", [db_fine, db_fine_2]) self.assertCountEqual( [fine, fine_2], converter.convert_schema_objects_to_entity( db_entity.fines, populate_back_edges=False), )
def test_hasDefaultStatus(self) -> None: entity = entities.StateSentenceGroup.new_with_defaults( state_code="US_XX", status=entities.StateSentenceStatus.PRESENT_WITHOUT_INFO) db_entity = converter.convert_entity_to_schema_object(entity) if not isinstance(db_entity, schema.StateSentenceGroup): self.fail(f"Unexpected type for db_entity: {[db_entity]}.") self.assertTrue(entity.has_default_status()) entity.status = entities.StateSentenceStatus.SERVING self.assertFalse(entity.has_default_status()) self.assertTrue(db_entity.has_default_status()) db_entity.status = entities.StateSentenceStatus.SERVING.value self.assertFalse(db_entity.has_default_status())
def test_clearField(self): fine = entities.StateFine.new_with_defaults(external_id='ex1') fine_2 = entities.StateFine.new_with_defaults(external_id='ex2') entity = entities.StateSentenceGroup.new_with_defaults( state_code='us_nc', fines=[fine, fine_2]) db_entity = converter.convert_entity_to_schema_object(entity) entity.clear_field('state_code') entity.clear_field('fines') self.assertIsNone(entity.state_code) self.assertCountEqual([], entity.fines) db_entity.clear_field('state_code') db_entity.clear_field('fines') self.assertIsNone(db_entity.state_code) self.assertCountEqual([], db_entity.fines)
def test_getField(self) -> None: entity = entities.StateSentenceGroup.new_with_defaults( state_code="us_nc", status=StateSentenceStatus.PRESENT_WITHOUT_INFO, county_code=None, ) db_entity = converter.convert_entity_to_schema_object(entity) self.assertEqual("us_nc", entity.get_field("state_code")) self.assertEqual("us_nc", db_entity.get_field("state_code")) with pytest.raises(ValueError): entity.get_field("country_code") with pytest.raises(ValueError): db_entity.get_field("country_code")
def test_hasDefaultEnum(self) -> None: entity = entities.StateIncarcerationSentence.new_with_defaults( state_code="US_XX", incarceration_type=entities.StateIncarcerationType.STATE_PRISON, status=StateSentenceStatus.PRESENT_WITHOUT_INFO, ) db_entity = converter.convert_entity_to_schema_object(entity) if not isinstance(db_entity, schema.StateIncarcerationSentence): self.fail(f"Unexpected type for db_entity: {[db_entity]}.") self.assertTrue( entity.has_default_enum( "incarceration_type", entities.StateIncarcerationType.STATE_PRISON)) entity.incarceration_type_raw_text = "PRISON" self.assertFalse( entity.has_default_enum( "incarceration_type", entities.StateIncarcerationType.STATE_PRISON)) entity.incarceration_type = entities.StateIncarcerationType.COUNTY_JAIL entity.incarceration_type_raw_text = None self.assertFalse( entity.has_default_enum( "incarceration_type", entities.StateIncarcerationType.STATE_PRISON)) self.assertTrue( db_entity.has_default_enum( "incarceration_type", entities.StateIncarcerationType.STATE_PRISON)) db_entity.incarceration_type_raw_text = "PRISON" self.assertFalse( db_entity.has_default_enum( "incarceration_type", entities.StateIncarcerationType.STATE_PRISON)) db_entity.incarceration_type = entities.StateIncarcerationType.COUNTY_JAIL.value db_entity.incarceration_type_raw_text = None self.assertFalse( entity.has_default_enum( "incarceration_type", entities.StateIncarcerationType.STATE_PRISON))
def test_setField(self) -> None: entity = entities.StateSentenceGroup.new_with_defaults( state_code="US_XX", status=StateSentenceStatus.PRESENT_WITHOUT_INFO) db_entity = converter.convert_entity_to_schema_object(entity) if not isinstance(db_entity, schema.StateSentenceGroup): self.fail(f"Unexpected type for db_entity: {[db_entity]}.") entity.set_field("state_code", "us_nc") db_entity.set_field("state_code", "us_nc") self.assertEqual("us_nc", entity.state_code) self.assertEqual("us_nc", db_entity.state_code) with pytest.raises(ValueError): entity.set_field("country_code", "us") with pytest.raises(ValueError): db_entity.set_field("country_code", "us")
def test_getFieldAsList(self): fine = entities.StateFine.new_with_defaults(external_id='ex1') fine_2 = entities.StateFine.new_with_defaults(external_id='ex2') entity = entities.StateSentenceGroup.new_with_defaults( state_code='us_nc', fines=[fine, fine_2]) db_entity = converter.convert_entity_to_schema_object(entity) self.assertCountEqual(['us_nc'], entity.get_field_as_list('state_code')) self.assertCountEqual([fine, fine_2], entity.get_field_as_list('fines')) self.assertCountEqual([], entity.get_field_as_list('supervision_sentences')) self.assertCountEqual(['us_nc'], db_entity.get_field_as_list('state_code')) self.assertCountEqual([fine, fine_2], converter.convert_schema_objects_to_entity( db_entity.get_field_as_list('fines'), populate_back_edges=False)) self.assertCountEqual([], db_entity.get_field_as_list( 'supervision_sentences'))
def test_moveIncidentsOntoPeriods(self) -> None: merged_incarceration_period_1 = StateIncarcerationPeriod.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID + "|" + _EXTERNAL_ID_2, status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY, facility=_FACILITY, admission_date=_DATE_1, admission_reason=StateIncarcerationPeriodAdmissionReason.NEW_ADMISSION, release_date=_DATE_3, release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER, ) merged_incarceration_period_2 = StateIncarcerationPeriod.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID_3 + "|" + _EXTERNAL_ID_4, status=StateIncarcerationPeriodStatus.NOT_IN_CUSTODY, facility=_FACILITY_2, admission_date=_DATE_3, admission_reason=StateIncarcerationPeriodAdmissionReason.TRANSFER, release_date=_DATE_5, release_reason=StateIncarcerationPeriodReleaseReason.TRANSFER, ) unmerged_incarceration_period = StateIncarcerationPeriod.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID_5, status=StateIncarcerationPeriodStatus.IN_CUSTODY, facility=_FACILITY_3, admission_date=_DATE_5, admission_reason=StateIncarcerationPeriodAdmissionReason.TRANSFER, ) incident_1 = StateIncarcerationIncident.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID, facility=_FACILITY, incident_date=_DATE_2, ) incident_2 = StateIncarcerationIncident.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID_2, facility=_FACILITY_2, incident_date=_DATE_4, ) incident_3 = StateIncarcerationIncident.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID_3, facility=_FACILITY_4, incident_date=_DATE_7, ) placeholder_incarceration_period = StateIncarcerationPeriod.new_with_defaults( state_code=_STATE_CODE, incarceration_incidents=[incident_1, incident_2, incident_3], status=StateIncarcerationPeriodStatus.PRESENT_WITHOUT_INFO, ) incarceration_sentence = StateIncarcerationSentence.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID, status=StateSentenceStatus.PRESENT_WITHOUT_INFO, incarceration_periods=[ merged_incarceration_period_1, merged_incarceration_period_2, unmerged_incarceration_period, ], ) placeholder_incarceration_sentence = ( StateIncarcerationSentence.new_with_defaults( state_code=_STATE_CODE, external_id=_EXTERNAL_ID_2, incarceration_periods=[placeholder_incarceration_period], status=StateSentenceStatus.PRESENT_WITHOUT_INFO, ) ) sentence_group = StateSentenceGroup.new_with_defaults( state_code=_STATE_CODE, status=StateSentenceStatus.PRESENT_WITHOUT_INFO, incarceration_sentences=[ incarceration_sentence, placeholder_incarceration_sentence, ], ) person = StatePerson.new_with_defaults( state_code=_STATE_CODE, sentence_groups=[sentence_group] ) expected_merged_period = attr.evolve( merged_incarceration_period_1, incarceration_incidents=[incident_1] ) expected_merged_period_2 = attr.evolve( merged_incarceration_period_2, incarceration_incidents=[incident_2] ) expected_unmerged_period = attr.evolve(unmerged_incarceration_period) expected_placeholder_period = attr.evolve( placeholder_incarceration_period, incarceration_incidents=[incident_3] ) expected_sentence = attr.evolve( incarceration_sentence, incarceration_periods=[ expected_merged_period, expected_merged_period_2, expected_unmerged_period, ], ) expected_placeholder_sentence = attr.evolve( placeholder_incarceration_sentence, incarceration_periods=[expected_placeholder_period], ) expected_sentence_group = attr.evolve( sentence_group, incarceration_sentences=[expected_sentence, expected_placeholder_sentence], ) expected_person = convert_entity_to_schema_object( attr.evolve(person, sentence_groups=[expected_sentence_group]) ) schema_person = convert_entity_to_schema_object(person) if not isinstance(schema_person, schema.StatePerson): self.fail(f"Expected schema.StatePerson. Found {schema_person}") move_incidents_onto_periods([schema_person]) self.assert_schema_objects_equal(expected_person, schema_person)
def test_isSentenceEndedByStatus(self): sentence = StateSupervisionSentence.new_with_defaults() for status in StateSentenceStatus: sentence.status = status _is_sentence_ended_by_status( converter.convert_entity_to_schema_object(sentence))