defmodule MvWeb.MemberLive.IndexAddressCellTest do @moduledoc """ §1.1 — The address renders as one composite cell: line 1 = street + house number, line 2 = postal code + city. §1.12 — City and postal code stay findable via search despite the composite cell. """ use MvWeb.ConnCase, async: false import Phoenix.LiveViewTest alias Mv.Helpers.SystemActor defp create_member(attrs) do {:ok, member} = Mv.Membership.create_member( Map.merge( %{first_name: "Addr", last_name: "Tester", email: "addr@example.com"}, attrs ), actor: SystemActor.get_system_actor() ) member end test "address shows as one cell with street/house on line 1 and postal/city on line 2", %{ conn: conn } do member = create_member(%{ street: "Hauptstraße", house_number: "12a", postal_code: "10115", city: "Berlin" }) conn = conn_with_oidc_user(conn) {:ok, view, _html} = live(conn, ~p"/members") cell = view |> element("#row-#{member.id} [data-testid='member-address']") |> render() assert cell =~ "Hauptstraße" assert cell =~ "12a" assert cell =~ "10115" assert cell =~ "Berlin" # Composite, not four separate sortable address columns. refute has_element?(view, "[data-testid='street']") refute has_element?(view, "[data-testid='city']") end test "member with no address parts renders a screen-reader label, not a blank cell", %{ conn: conn } do member = create_member(%{email: "no-address@example.com"}) conn = conn_with_oidc_user(conn) {:ok, view, _html} = live(conn, ~p"/members") row = view |> element("#row-#{member.id}") |> render() assert row =~ "No address" refute has_element?(view, "#row-#{member.id} [data-testid='member-address']") end test "members stay findable by city via search", %{conn: conn} do member = create_member(%{city: "Hamburg", email: "city-search@example.com"}) conn = conn_with_oidc_user(conn) {:ok, view, _html} = live(conn, ~p"/members?query=Hamburg") assert has_element?(view, "#row-#{member.id}") end test "members stay findable by postal code via search", %{conn: conn} do member = create_member(%{postal_code: "99999", email: "postal-search@example.com"}) conn = conn_with_oidc_user(conn) {:ok, view, _html} = live(conn, ~p"/members?query=99999") assert has_element?(view, "#row-#{member.id}") end end