defmodule MvWeb.MemberLive.IndexDefaultColumnsTest do @moduledoc """ §1.2 — With no persisted column selection, exactly the curated default columns are visible: selection checkbox, Name (name + email), Address (composite), fee type, fee status, groups, join date. """ use MvWeb.ConnCase, async: false import Phoenix.LiveViewTest alias Mv.Helpers.SystemActor setup %{conn: conn} do {:ok, _} = Mv.Membership.create_member( %{ first_name: "Col", last_name: "Default", email: "col@example.com", street: "Musterweg", house_number: "1", postal_code: "10115", city: "Berlin" }, actor: SystemActor.get_system_actor() ) %{conn: conn_with_oidc_user(conn)} end test "curated columns are visible by default", %{conn: conn} do {:ok, view, _html} = live(conn, ~p"/members") # Composite Name + Address cells. assert has_element?(view, "[data-testid='member-name']") assert has_element?(view, "[data-testid='member-address']") # Fee type, fee status, groups, join date headers. assert has_element?(view, "[data-testid='membership_fee_type']") assert has_element?(view, "[data-testid='join_date']") assert has_element?(view, "th", "Membership Fee Status") assert has_element?(view, "[data-testid='groups']") end test "the individual name/address sub-fields are hidden by default", %{conn: conn} do {:ok, view, _html} = live(conn, ~p"/members") for field <- ~w(first_name last_name email city street house_number postal_code country) do refute has_element?(view, "[data-testid='#{field}']") end end test "an explicit field selection still overrides the curated default", %{conn: conn} do {:ok, view, _html} = live(conn, ~p"/members?fields=email") assert has_element?(view, "[data-testid='email']") refute has_element?(view, "[data-testid='member-name']") end end