Return empty string in the event of no detected language

This commit is contained in:
midnight 2023-05-08 18:52:19 -04:00
parent 145c73076d
commit f1e66b39c7
2 changed files with 19 additions and 3 deletions

View file

@ -39,9 +39,9 @@ def translate(string, from_language, to_language) do
detected =
if Map.has_key?(body, "detectedLanguage") do
get_in(body, ["detectedLanguage", "language"])
else
from_language
end
else
from_language || ""
end
{:ok, detected, translated}
else

View file

@ -133,5 +133,21 @@ test "should gracefully handle an unsupported language" do
assert {:error, "libre_translate: request failed (code 400)"} =
LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", nil, "zoop")
end
test "should work when no detected language is received" do
Tesla.Mock.mock(fn
%{method: :post, url: "http://libre.translate/translate"} ->
%Tesla.Env{
status: 200,
body:
Jason.encode!(%{
translatedText: "I will crush you"
})
}
end)
assert {:ok, "", "I will crush you"} =
LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", nil, "en")
end
end
end