feat: Improve handling of association name config
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Simon 2026-05-07 12:13:45 +02:00
parent 605a897045
commit 2443bc62ac
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2
9 changed files with 179 additions and 4 deletions

View file

@ -0,0 +1,26 @@
defmodule MvWeb.LayoutsTest do
use MvWeb.ConnCase, async: false
import Phoenix.LiveViewTest
alias Mv.Membership
alias MvWeb.Layouts
describe "app/1" do
test "prefers provided club_name over settings fallback" do
{:ok, settings} = Membership.get_settings()
{:ok, _} = Membership.update_settings(settings, %{club_name: "Settings Club Name"})
html =
render_component(&Layouts.app/1, %{
flash: %{},
current_user: nil,
club_name: "Provided Club Name",
inner_block: [%{inner_block: fn _, _ -> "content" end}]
})
assert html =~ "Provided Club Name"
refute html =~ "Settings Club Name"
end
end
end

View file

@ -13,6 +13,7 @@ defmodule MvWeb.GlobalSettingsLiveTest do
"MAIL_FROM_NAME",
"MAIL_FROM_EMAIL"
]
@association_env_key "ASSOCIATION_NAME"
describe "Global Settings LiveView" do
setup %{conn: conn} do
@ -51,6 +52,17 @@ defmodule MvWeb.GlobalSettingsLiveTest do
assert render(view) =~ "Updated Club Name"
end
test "updated club name is shown after remount", %{conn: conn} do
{:ok, view, _html} = live(conn, ~p"/settings")
assert view
|> form("#settings-form", %{setting: %{club_name: "Remount Club Name"}})
|> render_submit()
{:ok, _view_after_remount, html_after_remount} = live(conn, ~p"/settings")
assert html_after_remount =~ "Remount Club Name"
end
test "shows error when club_name is empty", %{conn: conn} do
{:ok, view, _html} = live(conn, ~p"/settings")
@ -90,6 +102,34 @@ defmodule MvWeb.GlobalSettingsLiveTest do
"Open"
)
end
@tag :ui
test "disables association name input when ASSOCIATION_NAME is set", %{conn: conn} do
clear_association_name_env()
System.put_env(@association_env_key, "Association Name from ENV")
on_exit(fn -> clear_association_name_env() end)
{:ok, view, _html} = live(conn, ~p"/settings")
assert has_element?(view, "#setting_club_name[disabled]")
assert has_element?(view, "#setting_club_name[placeholder='From ASSOCIATION_NAME']")
refute has_element?(view, "#settings-form button", "Save Name")
assert render(view) =~ "Association name is set via environment variable ASSOCIATION_NAME"
end
@tag :ui
test "keeps association name input editable when ASSOCIATION_NAME is not set", %{conn: conn} do
clear_association_name_env()
on_exit(fn -> clear_association_name_env() end)
{:ok, view, _html} = live(conn, ~p"/settings")
refute has_element?(view, "#setting_club_name[disabled]")
assert has_element?(view, "#settings-form button", "Save Name")
refute render(view) =~
"Association name is set via environment variable ASSOCIATION_NAME"
end
end
describe "SMTP / E-Mail section" do
@ -270,4 +310,8 @@ defmodule MvWeb.GlobalSettingsLiveTest do
defp clear_smtp_env do
Enum.each(@smtp_env_keys, &System.delete_env/1)
end
defp clear_association_name_env do
System.delete_env(@association_env_key)
end
end