defmodule MvWeb.MemberLive.IndexDefaultColumnsTest do @moduledoc """ §1.2 — With no persisted column selection, exactly the curated default columns are visible: selection checkbox, Name (composite, no in-cell email line), E-Mail (its own column while the compact Member field keeps the email line off), 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']") # E-Mail is folded into the Member cell by default (include-email on), so it # shows as the in-cell email line rather than a separate column. assert has_element?(view, "[data-testid='member-name-email']") # 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") # The composite Name/Address cells replace their constituents by default, and # the email is folded into the Member cell (include-email on), so no separate # email column shows either. 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=join_date") assert has_element?(view, "[data-testid='join_date']") refute has_element?(view, "[data-testid='member-name']") end end