def test_given_several_anonymizers_then_we_use_the_correct_one():
    analyzer_result = AnalyzerResult.from_json({
        "score": 0.5,
        "entity_type": "PHONE_NUMBER",
        "start": 8,
        "end": 18
    })
    anonymizer_config = AnonymizerConfig("replace", {})
    anonymizer_config.anonymizer_class = MockAnonymizer
    text = AnonymizerEngine().anonymize("Number: 0554555556",
                                        [analyzer_result],
                                        {"PHONE_NUMBER": anonymizer_config})
    assert text == "Number: I am your new text!"
    def handle_analyzer_results_json(cls, data: Dict) -> List[AnalyzerResult]:
        """
        Go over analyzer results, validate them and convert to List[AnalyzeResult].

        :param data: contains the anonymizers and analyzer_results_json
        """
        analyzer_results = AnalyzerResults()
        analyzer_results_json = data.get("analyzer_results")
        if analyzer_results_json is None:
            cls.logger.debug(
                "invalid input, json missing field: analyzer_results_json")
            raise InvalidParamException(
                "Invalid input, "
                "request must contain analyzer results")
        for analyzer_result in analyzer_results_json:
            analyzer_result = AnalyzerResult.from_json(analyzer_result)
            analyzer_results.append(analyzer_result)
        return analyzer_results
def create_analayzer_result(entity_type: str, score: float, start: int, end: int):
    data = {"entity_type": entity_type, "score": score, "start": start, "end": end}
    return AnalyzerResult.from_json(data)
def test_given_json_for_creating_analyzer_result_without_text_then_creation_fails(
        request_json, result_text):
    with pytest.raises(InvalidParamException) as e:
        AnalyzerResult.from_json(request_json)
    assert result_text == e.value.err_msg