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:
@@ -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
39
test/web/gettext_test.exs
Normal 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
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user