Merge pull request 'Additional timeline query improvements from upstream' (#291)...
[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()
-    assert %{locale: "en"} == conn.assigns
+    assert %{locale: "en"} = conn.assigns
   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()
-    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
@@ -44,7 +58,38 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> 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
@@ -73,7 +118,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> 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
@@ -88,7 +133,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> 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
@@ -103,7 +148,7 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> 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
@@ -114,6 +159,6 @@ defmodule Pleroma.Web.Plugs.SetLocalePlugTest do
       |> SetLocalePlug.call([])
 
     assert "en" == Gettext.get_locale()
-    assert %{locale: "en"} == conn.assigns
+    assert %{locale: "en"} = conn.assigns
   end
 end