From dedd40b94934bf243aec2e7d5f76c944903f4ca4 Mon Sep 17 00:00:00 2001 From: Moritz Date: Wed, 18 Jun 2025 14:48:16 +0200 Subject: [PATCH] add further locale tests --- lib/mv_web/live_helpers.ex | 2 - lib/mv_web/locale_controller.ex | 2 +- lib/mv_web/member_live/form_component.ex | 6 ++- lib/mv_web/member_live/show.ex | 4 +- priv/gettext/de/LC_MESSAGES/default.po | 2 +- priv/gettext/en/LC_MESSAGES/default.po | 2 +- test/mv_web/locale_test.exs | 14 ++++++ test/mv_web/member_live/index_test.exs | 54 +++++++++++++++++++++--- 8 files changed, 73 insertions(+), 13 deletions(-) create mode 100644 test/mv_web/locale_test.exs diff --git a/lib/mv_web/live_helpers.ex b/lib/mv_web/live_helpers.ex index 1a84aae..03d7d45 100644 --- a/lib/mv_web/live_helpers.ex +++ b/lib/mv_web/live_helpers.ex @@ -1,6 +1,4 @@ defmodule MvWeb.LiveHelpers do - import Phoenix.LiveView - def on_mount(:default, _params, session, socket) do locale = session["locale"] || "en" Gettext.put_locale(locale) diff --git a/lib/mv_web/locale_controller.ex b/lib/mv_web/locale_controller.ex index 41b6ff7..3c8056f 100644 --- a/lib/mv_web/locale_controller.ex +++ b/lib/mv_web/locale_controller.ex @@ -15,4 +15,4 @@ defmodule MvWeb.LocaleController do _ -> nil end end -end \ No newline at end of file +end diff --git a/lib/mv_web/member_live/form_component.ex b/lib/mv_web/member_live/form_component.ex index e7c58c7..5535d1a 100644 --- a/lib/mv_web/member_live/form_component.ex +++ b/lib/mv_web/member_live/form_component.ex @@ -26,7 +26,9 @@ defmodule MvWeb.MemberLive.FormComponent do
<.header> {@title} - <:subtitle>{gettext("Use this form to manage member records and their properties.")} + <:subtitle> + {gettext("Use this form to manage member records and their properties.")} + <.simple_form @@ -104,7 +106,7 @@ defmodule MvWeb.MemberLive.FormComponent do socket = socket - |> put_flash(:info, gettext("Mitglied %{action} erfolgreich", action: action)) + |> put_flash(:info, gettext("Member %{action} successfully", action: action)) |> push_patch(to: socket.assigns.patch) {:noreply, socket} diff --git a/lib/mv_web/member_live/show.ex b/lib/mv_web/member_live/show.ex index 65e6e85..612abd6 100644 --- a/lib/mv_web/member_live/show.ex +++ b/lib/mv_web/member_live/show.ex @@ -22,7 +22,9 @@ defmodule MvWeb.MemberLive.Show do <:item title={gettext("Last Name")}>{@member.last_name} <:item title={gettext("Email")}>{@member.email} <:item title={gettext("Birth Date")}>{@member.birth_date} - <:item title={gettext("Paid")}>{if @member.paid, do: gettext("Yes"), else: gettext("No")} + <:item title={gettext("Paid")}> + {if @member.paid, do: gettext("Yes"), else: gettext("No")} + <:item title={gettext("Phone Number")}>{@member.phone_number} <:item title={gettext("Join Date")}>{@member.join_date} <:item title={gettext("Exit Date")}>{@member.exit_date} diff --git a/priv/gettext/de/LC_MESSAGES/default.po b/priv/gettext/de/LC_MESSAGES/default.po index e5615f6..aa33cc3 100644 --- a/priv/gettext/de/LC_MESSAGES/default.po +++ b/priv/gettext/de/LC_MESSAGES/default.po @@ -230,7 +230,7 @@ msgstr "Ja" #: lib/mv_web/member_live/form_component.ex:107 #, elixir-autogen, elixir-format -msgid "Mitglied %{action} erfolgreich" +msgid "Member %{action} successfully" msgstr "Mitglied %{action} erfolgreich" #: lib/mv_web/member_live/form_component.ex:100 diff --git a/priv/gettext/en/LC_MESSAGES/default.po b/priv/gettext/en/LC_MESSAGES/default.po index efce4f9..6173d39 100644 --- a/priv/gettext/en/LC_MESSAGES/default.po +++ b/priv/gettext/en/LC_MESSAGES/default.po @@ -231,7 +231,7 @@ msgstr "" #: lib/mv_web/member_live/form_component.ex:107 #, elixir-autogen, elixir-format -msgid "Mitglied %{action} erfolgreich" +msgid "Member %{action} successfully" msgstr "" #: lib/mv_web/member_live/form_component.ex:100 diff --git a/test/mv_web/locale_test.exs b/test/mv_web/locale_test.exs new file mode 100644 index 0000000..1cc6693 --- /dev/null +++ b/test/mv_web/locale_test.exs @@ -0,0 +1,14 @@ +defmodule MvWeb.LocaleTest do + use MvWeb.ConnCase, async: true + import Phoenix.ConnTest + + test "language switch via form sets the locale to English in the session" do + conn = post(build_conn(), "/set_locale", %{"locale" => "en"}) + assert get_session(conn, :locale) == "en" + end + + test "language switch via form sets the locale to German in the session" do + conn = post(build_conn(), "/set_locale", %{"locale" => "de"}) + assert get_session(conn, :locale) == "de" + end +end diff --git a/test/mv_web/member_live/index_test.exs b/test/mv_web/member_live/index_test.exs index 2d3e8bd..b5a5968 100644 --- a/test/mv_web/member_live/index_test.exs +++ b/test/mv_web/member_live/index_test.exs @@ -2,15 +2,59 @@ defmodule MvWeb.MemberLive.IndexTest do use MvWeb.ConnCase, async: true import Phoenix.LiveViewTest - test "zeigt übersetzten Titel auf Deutsch", %{conn: conn} do - Gettext.put_locale(MvWeb.Gettext, "de") + test "shows translated title in German", %{conn: conn} do + conn = Plug.Test.init_test_session(conn, locale: "de") {:ok, _view, html} = live(conn, "/members") - assert html =~ "Mitglieder" # Erwarteter deutscher Titel + # Expected German title + assert html =~ "Mitglieder" end test "shows translated title in English", %{conn: conn} do Gettext.put_locale(MvWeb.Gettext, "en") {:ok, _view, html} = live(conn, "/members") - assert html =~ "Members" # Erwarteter englischer Titel + # Expected English title + assert html =~ "Members" end -end \ No newline at end of file + + test "shows translated button text in German", %{conn: conn} do + conn = Plug.Test.init_test_session(conn, locale: "de") + {:ok, _view, html} = live(conn, "/members/new") + assert html =~ "Speichern" + end + + test "shows translated button text in English", %{conn: conn} do + Gettext.put_locale(MvWeb.Gettext, "en") + {:ok, _view, html} = live(conn, "/members/new") + assert html =~ "Save" + end + + test "shows translated flash message after creating a member in German", %{conn: conn} do + conn = Plug.Test.init_test_session(conn, locale: "de") + {:ok, view, _html} = live(conn, "/members") + view |> element("a", "Neues Mitglied") |> render_click() + + form_data = %{ + "member[first_name]" => "Max", + "member[last_name]" => "Mustermann", + "member[email]" => "max@example.com" + } + + view |> form("#member-form", form_data) |> render_submit() + assert has_element?(view, "#flash-group", "Mitglied erstellt erfolgreich") + end + + test "shows translated flash message after creating a member in English", %{conn: conn} do + conn = Plug.Test.init_test_session(conn, locale: "en") + {:ok, view, _html} = live(conn, "/members") + view |> element("a", "New Member") |> render_click() + + form_data = %{ + "member[first_name]" => "Max", + "member[last_name]" => "Mustermann", + "member[email]" => "max@example.com" + } + + view |> form("#member-form", form_data) |> render_submit() + assert has_element?(view, "#flash-group", "Member create successfully") + end +end