Use correct default language when no Accept-Language is set

Closes #792

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2021-07-21 15:46:04 +02:00
parent cc33ee7ada
commit ae25cba97a
8 changed files with 92 additions and 20 deletions

View File

@@ -317,6 +317,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
res =
conn
|> put_req_header("accept-language", "fr")
|> AbsintheHelpers.graphql_query(
query: @create_user_mutation,
variables: @user_creation
@@ -403,6 +404,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
res =
conn
|> put_req_header("accept-language", "fr")
|> AbsintheHelpers.graphql_query(
query: @register_person_mutation,
variables: Map.put(@user_creation, :email, "random")
@@ -431,6 +433,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
res =
conn
|> put_req_header("accept-language", "fr")
|> AbsintheHelpers.graphql_query(
query: @register_person_mutation,
variables: @user_creation
@@ -451,6 +454,7 @@ defmodule Mobilizon.GraphQL.Resolvers.UserTest do
res =
conn
|> put_req_header("accept-language", "fr")
|> AbsintheHelpers.graphql_query(
query: @register_person_mutation,
variables: Map.put(@user_creation, :preferredUsername, "Myactor")

39
test/web/gettext_test.exs Normal file
View File

@@ -0,0 +1,39 @@
defmodule Mobilizon.Web.GettextTest do
use ExUnit.Case, async: true
alias Mobilizon.Config
alias Mobilizon.Web.Gettext, as: GettextBackend
describe "test determine_best_locale/1" do
setup do
Config.put([:instance, :default_language], "en")
:ok
end
test "with empty string returns the default locale" do
assert GettextBackend.determine_best_locale("") == "en"
end
test "with empty string returns the default configured locale" do
Config.put([:instance, :default_language], "es")
assert GettextBackend.determine_best_locale("") == "es"
end
test "with empty string returns english as a proper fallback if the default configured locale is nil" do
Config.put([:instance, :default_language], nil)
assert GettextBackend.determine_best_locale("") == "en"
end
test "returns fallback with an unexisting locale" do
assert GettextBackend.determine_best_locale("yolo") == "en"
end
test "maps the correct part if the locale has multiple ones" do
assert GettextBackend.determine_best_locale("fr_CA") == "fr"
end
test "returns the locale if valid" do
assert GettextBackend.determine_best_locale("es") == "es"
end
end
end

View File

@@ -7,6 +7,7 @@ defmodule Mobilizon.Web.Plugs.SetLocalePlugTest do
use ExUnit.Case, async: true
use Plug.Test
alias Mobilizon.Web.Gettext, as: GettextBackend
alias Mobilizon.Web.Plugs.SetLocalePlug
alias Plug.Conn
@@ -17,7 +18,7 @@ defmodule Mobilizon.Web.Plugs.SetLocalePlugTest do
|> SetLocalePlug.call([])
assert "en" == Gettext.get_locale()
assert %{locale: "en"} == conn.assigns
assert %{locale: ""} == conn.assigns
end
test "use supported locale from `accept-language`" do
@@ -30,7 +31,7 @@ defmodule Mobilizon.Web.Plugs.SetLocalePlugTest do
)
|> SetLocalePlug.call([])
assert "ru" == Gettext.get_locale()
assert "ru" == Gettext.get_locale(GettextBackend)
assert %{locale: "ru"} == conn.assigns
end
@@ -41,7 +42,7 @@ defmodule Mobilizon.Web.Plugs.SetLocalePlugTest do
|> Conn.put_req_header("accept-language", "tlh")
|> SetLocalePlug.call([])
assert "en" == Gettext.get_locale()
assert %{locale: "en"} == conn.assigns
assert "en" == Gettext.get_locale(GettextBackend)
assert %{locale: ""} == conn.assigns
end
end