defmodule MvWeb.GlobalSettingsLiveTest do use MvWeb.ConnCase, async: true import Phoenix.LiveViewTest alias Mv.Membership describe "Global Settings LiveView" do setup %{conn: conn} do user = create_test_user(%{email: "admin@example.com"}) conn = conn_with_oidc_user(conn, user) {:ok, conn: conn, user: user} end test "renders the global settings page", %{conn: conn} do {:ok, _view, html} = live(conn, ~p"/settings") assert html =~ "Club Settings" assert html =~ "Settings" end test "displays current club name", %{conn: conn} do # Set initial club name {:ok, settings} = Membership.get_settings() {:ok, _updated} = Membership.update_settings(settings, %{club_name: "Test Club"}) {:ok, _view, html} = live(conn, ~p"/settings") assert html =~ "Test Club" end test "can update club name via form", %{conn: conn} do {:ok, view, _html} = live(conn, ~p"/settings") # Submit form with new club name assert view |> form("#settings-form", %{setting: %{club_name: "Updated Club Name"}}) |> render_submit() # Check for success message assert render(view) =~ "Settings updated successfully" assert render(view) =~ "Updated Club Name" end test "shows error when club_name is empty", %{conn: conn} do {:ok, view, _html} = live(conn, ~p"/settings") # Submit form with empty club name html = view |> form("#settings-form", %{setting: %{club_name: ""}}) |> render_submit() assert html =~ "must be present" end test "shows error when club_name is missing", %{conn: conn} do {:ok, view, _html} = live(conn, ~p"/settings") # Submit form with club_name explicitly set to empty string # (Phoenix forms will keep existing value if field is omitted) html = view |> form("#settings-form", %{setting: %{club_name: ""}}) |> render_submit() assert html =~ "must be present" end end end