Improve UX of join requests and fix minor bugs #492

Merged
simon merged 12 commits from bugfix/480-fix-minor-bugs into main 2026-05-06 14:34:44 +02:00
2 changed files with 99 additions and 0 deletions
Showing only changes of commit a6f6f402af - Show all commits

View file

@ -135,6 +135,34 @@ defmodule MvWeb.JoinLiveTest do
end end
end end
describe "join field labels" do
@tag role: :unauthenticated
test "renders custom field name as label for custom field IDs", %{conn: conn} do
{:ok, settings} = Membership.get_settings()
system_actor = Mv.Helpers.SystemActor.get_system_actor()
{:ok, custom_field} =
Membership.create_custom_field(
%{
name: "Preferred Pronouns",
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}
})
{:ok, view, _html} = live(conn, "/join")
assert has_element?(view, "label[for='join-field-#{custom_field.id}'] .label-text", custom_field.name)
end
end
defp enable_join_form(enabled) do defp enable_join_form(enabled) do
{:ok, settings} = Membership.get_settings() {:ok, settings} = Membership.get_settings()
{:ok, _} = Membership.update_settings(settings, %{join_form_enabled: enabled}) {:ok, _} = Membership.update_settings(settings, %{join_form_enabled: enabled})

View file

@ -0,0 +1,71 @@
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
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, "span", "#{custom_field.name}:")
assert has_element?(view, "span", "Alice Example")
refute has_element?(view, "span", "#{custom_field.id}:")
end
end
end