Improve UX of join requests and fix minor bugs #492
2 changed files with 99 additions and 0 deletions
|
|
@ -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})
|
||||||
|
|
|
||||||
71
test/mv_web/live/join_request_live/show_test.exs
Normal file
71
test/mv_web/live/join_request_live/show_test.exs
Normal 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
|
||||||
Loading…
Add table
Add a link
Reference in a new issue