124 lines
3.6 KiB
Elixir
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
|