def test_search_with_fraud_prediction(self, mock_q):
        """
        The cases in a search result should contain a fraud_prediction if it's available
        """
        url = reverse("v1:search-list")
        client = get_authenticated_client()

        CASE_ID = "FOO-ID"

        # Mock search function
        FOO_SEARCH_RESULTS = [{"id": CASE_ID}]
        mock_q.get_search_results = Mock(return_value=FOO_SEARCH_RESULTS)

        # Create a fraud prediction object with the same CASE_ID
        fraud_prediction = FraudPrediction.objects.create(
            case_id=CASE_ID,
            fraud_probability=0.6,
            fraud_prediction=True,
            business_rules={},
            shap_values={},
        )

        response = client.get(url, self.MOCK_SEARCH_QUERY_PARAMETERS)

        expected_fraud_prediction = FraudPredictionSerializer(
            fraud_prediction).data
        fraud_prediction_response = (
            response.json().get("cases")[0].get("fraud_prediction"))

        self.assertEqual(expected_fraud_prediction, fraud_prediction_response)
Exemplo n.º 2
0
class CaseSerializer(serializers.ModelSerializer):
    fraud_prediction = FraudPredictionSerializer(required=False,
                                                 read_only=True)
    id = serializers.CharField(source="case_id")

    class Meta:
        model = Case
        fields = ("id", "data", "fraud_prediction")
Exemplo n.º 3
0
def get_fraud_prediction(case_id):
    try:
        fraud_prediction = FraudPrediction.objects.get(case_id=case_id)
        serializer = FraudPredictionSerializer(fraud_prediction)
        return serializer.data
    except FraudPrediction.DoesNotExist:
        LOGGER.warning(
            "Fraud prediction object for case does not exist: {}".format(
                case_id))
class CaseSerializer(serializers.ModelSerializer):
    fraud_prediction = FraudPredictionSerializer(required=False,
                                                 read_only=True)
    id = serializers.CharField(source="case_id")
    data = serializers.SerializerMethodField(method_name="get_data")

    class Meta:
        model = Case
        fields = ("id", "data", "fraud_prediction")

    def get_data(self, obj):
        return obj.data_context(self.context)
Exemplo n.º 5
0
def get_fraud_predictions():
    """
    Returns a dictionary of all fraud predictions mapped to case_ids
    """
    fraud_predictions = FraudPrediction.objects.all()
    fraud_prediction_dictionary = {}

    for fraud_prediction in fraud_predictions:
        fraud_prediction_dictionary[str(
            fraud_prediction.case_id)] = FraudPredictionSerializer(
                fraud_prediction).data

    return fraud_prediction_dictionary
Exemplo n.º 6
0
class CaseSearchSerializer(serializers.Serializer):
    id = serializers.CharField(source="case_id")
    fraud_prediction = FraudPredictionSerializer(required=False,
                                                 read_only=True)
    address = CaseAddress(read_only=True)