Merge pull request 'Delete 'installation/download-mastofe-build.sh'' (#317) from...
[akkoma] / test / pleroma / web / plugs / set_locale_plug_test.exs
index 349326c245878c1ceb48deb30504c87fc8c8ecc4..f9d34bbe48ac62beb76eabfd495150ceadac59b4 100644 (file)
@@ -16,7 +16,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "en" == Gettext.get_locale()
       |> SetLocalePlug.call([])
 
     assert "en" == Gettext.get_locale()
-    assert %{locale: "en"} == conn.assigns
+    assert %{locale: "en"} = conn.assigns
   end
 
   test "use supported locale from `accept-language`" do
   end
 
   test "use supported locale from `accept-language`" do
@@ -30,7 +30,21 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "ru" == Gettext.get_locale()
       |> SetLocalePlug.call([])
 
     assert "ru" == Gettext.get_locale()
-    assert %{locale: "ru"} == conn.assigns
+    assert %{locale: "ru"} = conn.assigns
+  end
+
+  test "fallback to the general language if a variant is not supported" do
+    conn =
+      :get
+      |> conn("/cofe")
+      |> Conn.put_req_header(
+        "accept-language",
+        "ru-CA;q=0.9, en;q=0.8, *;q=0.5"
+      )
+      |> SetLocalePlug.call([])
+
+    assert "ru" == Gettext.get_locale()
+    assert %{locale: "ru"} = conn.assigns
   end
 
   test "use supported locale with specifiers from `accept-language`" do
   end
 
   test "use supported locale with specifiers from `accept-language`" do
@@ -44,7 +58,38 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "zh_Hans" == Gettext.get_locale()
       |> SetLocalePlug.call([])
 
     assert "zh_Hans" == Gettext.get_locale()
-    assert %{locale: "zh_Hans"} == conn.assigns
+    assert %{locale: "zh_Hans"} = conn.assigns
+  end
+
+  test "it assigns all supported locales" do
+    conn =
+      :get
+      |> conn("/cofe")
+      |> Conn.put_req_header(
+        "accept-language",
+        "ru, fr-CH, fr;q=0.9, en;q=0.8, x-unsupported;q=0.8, *;q=0.5"
+      )
+      |> SetLocalePlug.call([])
+
+    assert "ru" == Gettext.get_locale()
+    assert %{locale: "ru", locales: ["ru", "fr", "en"]} = conn.assigns
+  end
+
+  test "it assigns all supported locales in cookie" do
+    conn =
+      :get
+      |> conn("/cofe")
+      |> put_req_cookie(SetLocalePlug.frontend_language_cookie_name(), "zh-Hans,uk,zh-Hant")
+      |> Conn.put_req_header(
+        "accept-language",
+        "ru, fr-CH, fr;q=0.9, en;q=0.8, x-unsupported;q=0.8, *;q=0.5"
+      )
+      |> SetLocalePlug.call([])
+
+    assert "zh_Hans" == Gettext.get_locale()
+
+    assert %{locale: "zh_Hans", locales: ["zh_Hans", "uk", "zh_Hant", "ru", "fr", "en"]} =
+             conn.assigns
   end
 
   test "fallback to some variant of the language if the unqualified language is not supported" do
   end
 
   test "fallback to some variant of the language if the unqualified language is not supported" do
@@ -73,7 +118,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "zh_Hans" == Gettext.get_locale()
       |> SetLocalePlug.call([])
 
     assert "zh_Hans" == Gettext.get_locale()
-    assert %{locale: "zh_Hans"} == conn.assigns
+    assert %{locale: "zh_Hans"} = conn.assigns
   end
 
   test "fallback to supported locale from `accept-language` if locale in cookie not supported" do
   end
 
   test "fallback to supported locale from `accept-language` if locale in cookie not supported" do
@@ -88,7 +133,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "ru" == Gettext.get_locale()
       |> SetLocalePlug.call([])
 
     assert "ru" == Gettext.get_locale()
-    assert %{locale: "ru"} == conn.assigns
+    assert %{locale: "ru"} = conn.assigns
   end
 
   test "fallback to default if nothing is supported" do
   end
 
   test "fallback to default if nothing is supported" do
@@ -103,7 +148,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "en" == Gettext.get_locale()
       |> SetLocalePlug.call([])
 
     assert "en" == Gettext.get_locale()
-    assert %{locale: "en"} == conn.assigns
+    assert %{locale: "en"} = conn.assigns
   end
 
   test "use default locale if locale from `accept-language` is not supported" do
   end
 
   test "use default locale if locale from `accept-language` is not supported" do
@@ -114,6 +159,6 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "en" == Gettext.get_locale()
       |> SetLocalePlug.call([])
 
     assert "en" == Gettext.get_locale()
-    assert %{locale: "en"} == conn.assigns
+    assert %{locale: "en"} = conn.assigns
   end
 end
   end
 end