def test_handle_citation_violations_us_mo_no_conditions(self): # Arrange supervision_violation = \ StateSupervisionViolation.new_with_defaults( state_code='US_MO' ) supervision_violation_response = \ StateSupervisionViolationResponse.new_with_defaults( state_code='US_MO', response_type=StateSupervisionViolationResponseType.CITATION, supervision_violation=supervision_violation ) # Act _ = normalize_violations_on_responses(supervision_violation_response) # Assert self.assertEqual([ StateSupervisionViolationTypeEntry( state_code='US_MO', violation_type=StateSupervisionViolationType.TECHNICAL, violation_type_raw_text=None) ], supervision_violation.supervision_violation_types) self.assertEqual([], supervision_violation.supervision_violated_conditions)
def test_handle_citation_violations_us_mo(self): # Arrange supervision_violation = \ StateSupervisionViolation.new_with_defaults( state_code='US_MO', supervision_violated_conditions=[ StateSupervisionViolatedConditionEntry.new_with_defaults(condition='LAW'), ] ) supervision_violation_response = \ StateSupervisionViolationResponse.new_with_defaults( state_code='US_MO', response_type=StateSupervisionViolationResponseType.CITATION, supervision_violation=supervision_violation ) # Act _ = normalize_violations_on_responses(supervision_violation_response) # Assert self.assertEqual(supervision_violation.supervision_violation_types, [ StateSupervisionViolationTypeEntry( state_code='US_MO', violation_type=StateSupervisionViolationType.TECHNICAL, violation_type_raw_text=None) ]) self.assertEqual( supervision_violation.supervision_violated_conditions, [ StateSupervisionViolatedConditionEntry.new_with_defaults( condition=_LAW_CITATION_SUBTYPE_STR), ])
def test_normalize_violations_on_responses_us_mo_no_conditions( self) -> None: # Arrange supervision_violation = StateSupervisionViolation.new_with_defaults( state_code="US_MO") supervision_violation_response = ( StateSupervisionViolationResponse.new_with_defaults( state_code="US_MO", response_type=StateSupervisionViolationResponseType.CITATION, supervision_violation=supervision_violation, )) # Act _ = _normalize_violations_on_responses(supervision_violation_response) # Assert self.assertEqual( [ StateSupervisionViolationTypeEntry( state_code="US_MO", violation_type=StateSupervisionViolationType.TECHNICAL, violation_type_raw_text=None, ) ], supervision_violation.supervision_violation_types, ) self.assertEqual([], supervision_violation.supervision_violated_conditions)
def _normalize_violations_on_responses_us_mo(response: StateSupervisionViolationResponse) -> \ StateSupervisionViolationResponse: """For responses that are not of type CITATION or don't have an associated violation, does nothing. Responses of type CITATION do not have violation types on their violations, so the violation types and conditions violated on these violations are updated.""" if not response.state_code or response.state_code.upper() != 'US_MO': raise ValueError(f"Calling state-specific US_MO helper function for a response from {response.state_code}") # Citations in US_MO don't have violation types on them. However, we want to classify them as TECHNICAL. # If this is a CITATION and there's a violation on it, add TECHNICAL to the list of violation types. if response.response_type == StateSupervisionViolationResponseType.CITATION and response.supervision_violation: supervision_violation = response.supervision_violation if not supervision_violation.supervision_violation_types: supervision_violation.supervision_violation_types.append( StateSupervisionViolationTypeEntry( state_code=response.state_code, violation_type=StateSupervisionViolationType.TECHNICAL, violation_type_raw_text=None ) ) # Update citations that list the _LAW_CONDITION_STR as a condition to instead list _LAW_CITATION_SUBTYPE_STR # so we can track law citations independently from other violations with LAW conditions on them for condition_entry in supervision_violation.supervision_violated_conditions: if condition_entry.condition == _LAW_CONDITION_STR: condition_entry.condition = _LAW_CITATION_SUBTYPE_STR return response
def test_normalize_violations_on_responses_us_mo(self) -> None: # Arrange supervision_violation = StateSupervisionViolation.new_with_defaults( state_code="US_MO", supervision_violated_conditions=[ StateSupervisionViolatedConditionEntry.new_with_defaults( state_code="US_MO", condition="LAW"), ], ) supervision_violation_response = ( StateSupervisionViolationResponse.new_with_defaults( state_code="US_MO", response_type=StateSupervisionViolationResponseType.CITATION, supervision_violation=supervision_violation, )) # Act _ = _normalize_violations_on_responses(supervision_violation_response) # Assert self.assertEqual( supervision_violation.supervision_violation_types, [ StateSupervisionViolationTypeEntry( state_code="US_MO", violation_type=StateSupervisionViolationType.TECHNICAL, violation_type_raw_text=None, ) ], ) self.assertEqual( supervision_violation.supervision_violated_conditions, [ StateSupervisionViolatedConditionEntry.new_with_defaults( state_code="US_MO", condition=_LAW_CITATION_SUBTYPE_STR), ], )