mitgliederverwaltung/test/mv_web/live/join_request_live/show_test.exs
Simon 0159d5352a
Some checks failed
continuous-integration/drone/push Build is failing
fix: joinrequest field formats
2026-05-06 12:02:58 +02:00

124 lines
3.6 KiB
Elixir

defmodule MvWeb.JoinRequestLive.ShowTest do
@moduledoc """
Tests for join request detail view label rendering.
Focus: applicant data labels for custom fields should use custom field names,
not raw UUIDs.
"""
use MvWeb.ConnCase, async: false
import Phoenix.LiveViewTest
alias Mv.Fixtures
alias Mv.Membership
alias MvWeb.Helpers.DateFormatter
setup do
{:ok, settings} = Membership.get_settings()
saved = %{
join_form_enabled: settings.join_form_enabled,
join_form_field_ids: settings.join_form_field_ids,
join_form_field_required: settings.join_form_field_required
}
on_exit(fn ->
{:ok, current_settings} = Membership.get_settings()
Membership.update_settings(current_settings, %{
join_form_enabled: saved.join_form_enabled,
join_form_field_ids: saved.join_form_field_ids || [],
join_form_field_required: saved.join_form_field_required || %{}
})
end)
:ok
end
describe "custom field labels in applicant data" do
@tag role: :normal_user
test "renders custom field name instead of custom field UUID", %{conn: conn} do
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{:ok, settings} = Membership.get_settings()
{:ok, custom_field} =
Membership.create_custom_field(
%{
name: "Emergency contact",
value_type: :string
},
actor: system_actor
)
{:ok, _} =
Membership.update_settings(settings, %{
join_form_enabled: true,
join_form_field_ids: ["email", custom_field.id],
join_form_field_required: %{"email" => true, custom_field.id => false}
})
join_request =
Fixtures.submitted_join_request_fixture(%{
form_data: %{custom_field.id => "Alice Example"}
})
{:ok, view, _html} = live(conn, "/join_requests/#{join_request.id}")
assert has_element?(view, "dt", "#{custom_field.name}:")
assert has_element?(view, "dd", "Alice Example")
refute has_element?(view, "dt", "#{custom_field.id}:")
end
@tag role: :normal_user
test "formats boolean/date values and renders status in aligned row", %{conn: conn} do
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{:ok, settings} = Membership.get_settings()
{:ok, boolean_field} =
Membership.create_custom_field(
%{
name: "Privacy accepted",
value_type: :boolean
},
actor: system_actor
)
{:ok, date_field} =
Membership.create_custom_field(
%{
name: "Birth date",
value_type: :date
},
actor: system_actor
)
{:ok, _} =
Membership.update_settings(settings, %{
join_form_enabled: true,
join_form_field_ids: ["email", boolean_field.id, date_field.id],
join_form_field_required: %{
"email" => true,
boolean_field.id => false,
date_field.id => false
}
})
join_request =
Fixtures.submitted_join_request_fixture(%{
form_data: %{
boolean_field.id => "on",
date_field.id => "2000-01-12"
}
})
{:ok, view, _html} = live(conn, "/join_requests/#{join_request.id}")
assert has_element?(view, "dt", "Privacy accepted:")
assert has_element?(view, "dd", "Yes")
assert has_element?(view, "dt", "Birth date:")
assert has_element?(view, "dd", DateFormatter.format_date(~D[2000-01-12]))
assert has_element?(view, "dt", "Status:")
assert has_element?(view, "dd", "Submitted")
end
end
end