예제 #1
0
def test_saves_repeated_request():
    rand_num = randint(0, 10**100)

    request_data = {
        "from_language": "en",
        "to_language": "es",
        "source_text": f"hello {rand_num}",
        "preferred_engine": "google",
        "with_alignment": False,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 200
    result = resp.json()

    expected_result = {
        "translated_text": f"hola {rand_num}",
        "engine": "google",
        "engine_version": "3",
        "from_language": "en",
        "to_language": "es",
        "source_text": f"hello {rand_num}",
        "detected_language_confidence": None,
        "alignment": None,
    }

    assert result == expected_result
    assert resp.headers["X-Translation-Source"] == "api"
    sleep(5)
    repeated_resp = httpx.get(translate_url(), params=request_data)
    repeated_result = repeated_resp.json()
    assert repeated_result == expected_result
    assert repeated_resp.headers["X-Translation-Source"] == "database"
예제 #2
0
def test_translate_amazon_detection():
    request_data = {
        "to_language": "es",
        "source_text": "hello",
        "preferred_engine": "amazon",
        "with_alignment": False,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 400
    result = resp.json()
    assert result == {
        "detail": "amazon (2020-04-30) engine does not support detection, please specify from_language"
    }
예제 #3
0
def test_translate_deepl_alignment():
    request_data = {
        "to_language": "es",
        "source_text": "hello",
        "preferred_engine": "deepl",
        "with_alignment": True,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 400
    result = resp.json()
    assert result == {
        "detail": "deepl (2) does not support alignment",
    }
예제 #4
0
def test_translate_microsoft_alignment_with_bad_pair():
    request_data = {
        "from_language": "es",
        "to_language": "fr",
        "source_text": "hola",
        "preferred_engine": "microsoft",
        "with_alignment": True,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 400
    result = resp.json()
    assert result == {
        "detail":
        "microsoft (3.0) engine does not support alignment between es and fr"
    }
예제 #5
0
def test_translate_deepl_detection():
    request_data = {
        "to_language": "es",
        "source_text": "hello",
        "preferred_engine": "deepl",
        "with_alignment": False,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 200
    result = resp.json()
    assert result == {
        "translated_text": "hola",
        "engine": "deepl",
        "engine_version": "2",
        "from_language": "en",
        "to_language": "es",
        "source_text": "hello",
        "detected_language_confidence": None,
        "alignment": None,
    }
예제 #6
0
def test_is_best_for_korean():
    request_data = {
        "from_language": "en",
        "to_language": "ko",
        "source_text": "hello",
        "with_alignment": False,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 200
    result = resp.json()
    assert result == {
        "translated_text": "안녕하십니까",
        "engine": "papago",
        "engine_version": "1",
        "from_language": "en",
        "to_language": "ko",
        "source_text": "hello",
        "detected_language_confidence": None,
        "alignment": None,
    }
예제 #7
0
def test_post_method():
    request_data = {
        "from_language": "en",
        "to_language": "es",
        "source_text": "hello",
        "preferred_engine": "microsoft",
        "with_alignment": False,
    }
    resp = httpx.post(translate_url(), json=request_data)
    assert resp.status_code == 200
    result = resp.json()
    assert result == {
        "translated_text": "Hola",
        "engine": "microsoft",
        "engine_version": "3.0",
        "from_language": "en",
        "to_language": "es",
        "source_text": "hello",
        "detected_language_confidence": None,
        "alignment": None,
    }
예제 #8
0
def test_will_fallback_when_papago_does_not_support_language_pair():
    request_data = {
        "from_language": "en",
        "to_language": "es",
        "source_text": "hello",
        "with_alignment": False,
        "fallback": True,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 200
    result = resp.json()
    assert result == {
        "translated_text": "hola",
        "engine": "deepl",
        "engine_version": "2",
        "from_language": "en",
        "to_language": "es",
        "source_text": "hello",
        "detected_language_confidence": None,
        "alignment": None,
    }
예제 #9
0
def test_falls_back_when_alignment_required_even_though_not_best():
    request_data = {
        "from_language": "en",
        "to_language": "ko",
        "source_text": "hello",
        "fallback": True,
        "with_alignment": True,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 200
    result = resp.json()

    assert result == {
        "translated_text":
        "안녕하세요",
        "engine":
        "microsoft",
        "engine_version":
        "3.0",
        "from_language":
        "en",
        "to_language":
        "ko",
        "source_text":
        "hello",
        "detected_language_confidence":
        None,
        "alignment": [{
            "dest": {
                "end": "4",
                "start": "0",
                "text": "안녕하세요"
            },
            "src": {
                "end": "4",
                "start": "0",
                "text": "hello"
            },
        }],
    }
예제 #10
0
def test_translate_microsoft_alignment():
    request_data = {
        "from_language": "en",
        "to_language": "es",
        "source_text": "hello",
        "preferred_engine": "microsoft",
        "with_alignment": True,
    }
    resp = httpx.get(translate_url(), params=request_data)
    assert resp.status_code == 200
    result = resp.json()
    assert result == {
        "translated_text":
        "Hola",
        "engine":
        "microsoft",
        "engine_version":
        "3.0",
        "from_language":
        "en",
        "to_language":
        "es",
        "source_text":
        "hello",
        "detected_language_confidence":
        None,
        "alignment": [{
            "dest": {
                "end": "3",
                "start": "0",
                "text": "Hola"
            },
            "src": {
                "end": "4",
                "start": "0",
                "text": "hello"
            },
        }],
    }