fix: joinrequest field formats
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
15e9a52bc9
commit
0159d5352a
2 changed files with 89 additions and 7 deletions
|
|
@ -156,14 +156,16 @@ defmodule MvWeb.JoinRequestLive.Show do
|
||||||
label={gettext("Submitted at")}
|
label={gettext("Submitted at")}
|
||||||
value={DateFormatter.format_datetime(@join_request.submitted_at, @browser_timezone)}
|
value={DateFormatter.format_datetime(@join_request.submitted_at, @browser_timezone)}
|
||||||
/>
|
/>
|
||||||
<div class="flex gap-2">
|
<dl class="grid gap-1 md:grid-cols-[14rem_minmax(0,1fr)] md:gap-2">
|
||||||
<span class="text-base-content/60 min-w-32 shrink-0">{gettext("Status")}:</span>
|
<dt class="m-0 text-base-content/60 whitespace-normal break-words">
|
||||||
<span>
|
{gettext("Status")}:
|
||||||
|
</dt>
|
||||||
|
<dd class="m-0 min-w-0">
|
||||||
<.badge variant={JoinRequestHelpers.status_badge_variant(@join_request.status)}>
|
<.badge variant={JoinRequestHelpers.status_badge_variant(@join_request.status)}>
|
||||||
{JoinRequestHelpers.format_status(@join_request.status)}
|
{JoinRequestHelpers.format_status(@join_request.status)}
|
||||||
</.badge>
|
</.badge>
|
||||||
</span>
|
</dd>
|
||||||
</div>
|
</dl>
|
||||||
<%= if @join_request.status in [:approved, :rejected] do %>
|
<%= if @join_request.status in [:approved, :rejected] do %>
|
||||||
<%= if @join_request.approved_at do %>
|
<%= if @join_request.approved_at do %>
|
||||||
<.field_row
|
<.field_row
|
||||||
|
|
@ -285,11 +287,38 @@ defmodule MvWeb.JoinRequestLive.Show do
|
||||||
defp format_applicant_value(value) when is_boolean(value),
|
defp format_applicant_value(value) when is_boolean(value),
|
||||||
do: if(value, do: gettext("Yes"), else: gettext("No"))
|
do: if(value, do: gettext("Yes"), else: gettext("No"))
|
||||||
|
|
||||||
defp format_applicant_value(value) when is_binary(value) or is_number(value),
|
defp format_applicant_value(value) when is_binary(value),
|
||||||
do: to_string(value)
|
do: format_binary_applicant_value(value)
|
||||||
|
|
||||||
|
defp format_applicant_value(value) when is_number(value), do: to_string(value)
|
||||||
|
|
||||||
defp format_applicant_value(value), do: to_string(value)
|
defp format_applicant_value(value), do: to_string(value)
|
||||||
|
|
||||||
|
defp format_binary_applicant_value(value) do
|
||||||
|
trimmed_value = String.trim(value)
|
||||||
|
|
||||||
|
cond do
|
||||||
|
trimmed_value == "" ->
|
||||||
|
nil
|
||||||
|
|
||||||
|
String.downcase(trimmed_value) in ["on", "true", "1"] ->
|
||||||
|
gettext("Yes")
|
||||||
|
|
||||||
|
String.downcase(trimmed_value) in ["off", "false", "0"] ->
|
||||||
|
gettext("No")
|
||||||
|
|
||||||
|
true ->
|
||||||
|
format_iso_date_string(trimmed_value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp format_iso_date_string(value) do
|
||||||
|
case Date.from_iso8601(value) do
|
||||||
|
{:ok, date} -> DateFormatter.format_date(date)
|
||||||
|
_ -> value
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
defp format_applicant_value_from_map(value) do
|
defp format_applicant_value_from_map(value) do
|
||||||
raw = Map.get(value, "_union_value") || Map.get(value, "value")
|
raw = Map.get(value, "_union_value") || Map.get(value, "value")
|
||||||
type = Map.get(value, "_union_type") || Map.get(value, "type")
|
type = Map.get(value, "_union_type") || Map.get(value, "type")
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ defmodule MvWeb.JoinRequestLive.ShowTest do
|
||||||
|
|
||||||
alias Mv.Fixtures
|
alias Mv.Fixtures
|
||||||
alias Mv.Membership
|
alias Mv.Membership
|
||||||
|
alias MvWeb.Helpers.DateFormatter
|
||||||
|
|
||||||
setup do
|
setup do
|
||||||
{:ok, settings} = Membership.get_settings()
|
{:ok, settings} = Membership.get_settings()
|
||||||
|
|
@ -67,5 +68,57 @@ defmodule MvWeb.JoinRequestLive.ShowTest do
|
||||||
assert has_element?(view, "dd", "Alice Example")
|
assert has_element?(view, "dd", "Alice Example")
|
||||||
refute has_element?(view, "dt", "#{custom_field.id}:")
|
refute has_element?(view, "dt", "#{custom_field.id}:")
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue