Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 4
0
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),
            ],
        )