clear_config([:libre_translate, :url], "http://libre.translate/translate")
end
+ test "should list supported languages" do
+ clear_config([:deepl, :tier], :free)
+
+ Tesla.Mock.mock(fn
+ %{method: :get, url: "http://libre.translate/languages"} = _ ->
+ %Tesla.Env{
+ status: 200,
+ body:
+ Jason.encode!([
+ %{
+ "code" => "en",
+ "name" => "English"
+ },
+ %{
+ "code" => "ar",
+ "name" => "Arabic"
+ }
+ ])
+ }
+ end)
+
+ assert {:ok, [%{code: "en", name: "English"}, %{code: "ar", name: "Arabic"}]} =
+ LibreTranslate.languages()
+ end
+
test "should work without an API key" do
Tesla.Mock.mock(fn
%{method: :post, url: "http://libre.translate/translate"} = env ->
- assert {:ok, %{"api_key" => nil}} = Jason.decode(env.body)
+ assert {:ok, %{"api_key" => nil, "source" => "auto"}} = Jason.decode(env.body)
%Tesla.Env{
status: 200,
}
end)
- assert {:ok, "ja", "I will crush you"} = LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "en")
+ assert {:ok, "ja", "I will crush you"} =
+ LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", nil, "en")
end
test "should work with an API key" do
}
end)
- assert {:ok, "ja", "I will crush you"} = LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "en")
+ assert {:ok, "ja", "I will crush you"} =
+ LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", nil, "en")
end
test "should gracefully handle API key errors" do
end)
assert {:error, "libre_translate: request failed (code 403)"} =
- LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "en")
+ LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", nil, "en")
+ end
+
+ test "should set a source language if requested" do
+ Tesla.Mock.mock(fn
+ %{method: :post, url: "http://libre.translate/translate"} = env ->
+ assert {:ok, %{"api_key" => nil, "source" => "ja"}} = Jason.decode(env.body)
+
+ %Tesla.Env{
+ status: 200,
+ body:
+ Jason.encode!(%{
+ translatedText: "I will crush you"
+ })
+ }
+ end)
+
+ assert {:ok, "ja", "I will crush you"} =
+ LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "ja", "en")
end
test "should gracefully handle an unsupported language" do
end)
assert {:error, "libre_translate: request failed (code 400)"} =
- LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", "zoop")
+ LibreTranslate.translate("ギュギュ握りつぶしちゃうぞ", nil, "zoop")
end
end
end