tests: update tests
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
carla 2026-02-05 15:03:36 +01:00
parent 9b9e7ec995
commit 8e387d8e17
5 changed files with 429 additions and 79 deletions

View file

@ -15,19 +15,19 @@ defmodule MvWeb.Components.SearchBarComponentTest do
{:ok, view, _html} = live(conn, "/members")
# simulate search input and check that other members are not listed
html =
_html =
view
|> element("form[role=search]")
|> render_submit(%{"query" => "Friedrich"})
refute html =~ "Greta"
refute has_element?(view, "input[data-testid='search-input'][value='Greta']")
html =
_html =
view
|> element("form[role=search]")
|> render_submit(%{"query" => "Greta"})
refute html =~ "Friedrich"
refute has_element?(view, "input[data-testid='search-input'][value='Friedrich']")
end
end
end

View file

@ -70,10 +70,10 @@ defmodule MvWeb.MemberExportControllerTest do
body = response(conn, 200)
lines = String.split(body, "\n", trim: true)
# Header + 2 data rows
# Header + 2 data rows (headers are localized labels)
assert length(lines) == 3
assert hd(lines) =~ "first_name"
assert hd(lines) =~ "email"
assert hd(lines) =~ "First Name"
assert hd(lines) =~ "Email"
assert body =~ "Alice"
assert body =~ "Bob"
refute body =~ "Carol"
@ -107,9 +107,9 @@ defmodule MvWeb.MemberExportControllerTest do
body = response(conn, 200)
lines = String.split(body, "\n", trim: true)
# Header + at least 3 data rows
# Header + at least 3 data rows (headers are localized labels)
assert length(lines) >= 4
assert hd(lines) =~ "first_name"
assert hd(lines) =~ "First Name"
assert body =~ "Alice"
assert body =~ "Bob"
assert body =~ "Carol"
@ -138,9 +138,106 @@ defmodule MvWeb.MemberExportControllerTest do
body = response(conn, 200)
header = body |> String.split("\n", trim: true) |> hd()
assert header =~ "first_name"
assert header =~ "email"
assert header =~ "First Name"
assert header =~ "Email"
refute header =~ "unknown_field"
end
test "export includes membership_fee_status column when requested", %{
conn: conn,
member1: m1
} do
payload = %{
"selected_ids" => [m1.id],
"member_fields" => ["first_name", "membership_fee_status"],
"custom_field_ids" => [],
"query" => nil,
"sort_field" => nil,
"sort_order" => nil
}
conn = get(conn, "/members")
csrf_token = csrf_token_from_conn(conn)
conn =
post(conn, "/members/export.csv", %{
"payload" => Jason.encode!(payload),
"_csrf_token" => csrf_token
})
assert conn.status == 200
body = response(conn, 200)
header = body |> String.split("\n", trim: true) |> hd()
assert header =~ "First Name"
assert header =~ "Membership Fee Status"
assert body =~ "Alice"
end
test "export with payment_status alias: header shows Membership Fee Status", %{
conn: conn,
member1: m1
} do
payload = %{
"selected_ids" => [m1.id],
"member_fields" => ["first_name", "payment_status"],
"custom_field_ids" => [],
"query" => nil,
"sort_field" => nil,
"sort_order" => nil
}
conn = get(conn, "/members")
csrf_token = csrf_token_from_conn(conn)
conn =
post(conn, "/members/export.csv", %{
"payload" => Jason.encode!(payload),
"_csrf_token" => csrf_token
})
assert conn.status == 200
body = response(conn, 200)
header = body |> String.split("\n", trim: true) |> hd()
assert header =~ "Membership Fee Status"
assert body =~ "Alice"
end
test "export with show_current_cycle: membership fee status column exists stably", %{
conn: conn,
member1: _m1,
member2: _m2,
member3: _m3
} do
payload = %{
"selected_ids" => [],
"member_fields" => ["first_name", "email", "membership_fee_status"],
"custom_field_ids" => [],
"query" => nil,
"sort_field" => nil,
"sort_order" => nil,
"show_current_cycle" => true
}
conn = get(conn, "/members")
csrf_token = csrf_token_from_conn(conn)
conn =
post(conn, "/members/export.csv", %{
"payload" => Jason.encode!(payload),
"_csrf_token" => csrf_token
})
assert conn.status == 200
body = response(conn, 200)
lines = String.split(body, "\n", trim: true)
assert length(lines) >= 4
header = hd(lines)
assert header =~ "First Name"
assert header =~ "Email"
assert header =~ "Membership Fee Status"
end
end
end

View file

@ -48,34 +48,28 @@ defmodule MvWeb.MemberLive.IndexTest do
describe "translations" do
@describetag :ui
test "shows translated title in German", %{conn: conn} do
conn = conn_with_oidc_user(conn)
conn = Plug.Test.init_test_session(conn, locale: "de")
{:ok, _view, html} = live(conn, "/members")
# Expected German title
assert html =~ "Mitglieder"
end
test "shows translated title in English", %{conn: conn} do
conn = conn_with_oidc_user(conn)
Gettext.put_locale(MvWeb.Gettext, "en")
{:ok, _view, html} = live(conn, "/members")
# Expected English title
assert html =~ "Members"
end
test "shows translated title and button text by locale", %{conn: conn} do
locales = [
{"de", "Mitglieder", "Speichern",
fn c -> Plug.Test.init_test_session(c, locale: "de") end},
{"en", "Members", "Save",
fn c ->
Gettext.put_locale(MvWeb.Gettext, "en")
c
end}
]
test "shows translated button text in German", %{conn: conn} do
conn = conn_with_oidc_user(conn)
conn = Plug.Test.init_test_session(conn, locale: "de")
{:ok, _view, html} = live(conn, "/members/new")
assert html =~ "Speichern"
end
for {_locale, expected_title, expected_button, set_locale} <- locales do
base = conn_with_oidc_user(conn) |> set_locale.()
test "shows translated button text in English", %{conn: conn} do
conn = conn_with_oidc_user(conn)
Gettext.put_locale(MvWeb.Gettext, "en")
{:ok, _view, html} = live(conn, "/members/new")
assert html =~ "Save"
{:ok, _view, index_html} = live(base, "/members")
assert index_html =~ expected_title
base_form = conn_with_oidc_user(conn) |> set_locale.()
{:ok, _view, form_html} = live(base_form, "/members/new")
assert form_html =~ expected_button
end
end
test "shows translated flash message after creating a member in German", %{conn: conn} do
@ -543,7 +537,7 @@ defmodule MvWeb.MemberLive.IndexTest do
test "export button is rendered when no selection and shows (all)", %{conn: conn} do
conn = conn_with_oidc_user(conn)
{:ok, view, html} = live(conn, "/members")
{:ok, _view, html} = live(conn, "/members")
# Button text shows "all" when 0 selected (locale-dependent)
assert html =~ "Export to CSV"