feat: respect field types in join requests
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Simon 2026-05-06 11:37:40 +02:00
parent 95b666f04f
commit 6327ea00eb
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2
2 changed files with 115 additions and 31 deletions

View file

@ -192,7 +192,12 @@ defmodule MvWeb.JoinLiveTest do
{:ok, view, _html} = live(conn, "/join")
assert has_element?(view, "#join-form")
assert has_element?(view, "input#join-field-#{boolean_field.id}[name='#{boolean_field.id}']")
assert has_element?(
view,
"input#join-field-#{boolean_field.id}[name='#{boolean_field.id}']"
)
assert has_element?(view, "input#join-field-#{boolean_field.id}[type='checkbox']")
refute has_element?(view, "input#join-field-#{boolean_field.id}[type='text']")
end
@ -203,13 +208,19 @@ defmodule MvWeb.JoinLiveTest do
{:ok, settings} = Membership.get_settings()
{:ok, integer_field} =
Membership.create_custom_field(%{name: "Lucky number", value_type: :integer}, actor: system_actor)
Membership.create_custom_field(%{name: "Lucky number", value_type: :integer},
actor: system_actor
)
{:ok, date_field} =
Membership.create_custom_field(%{name: "Birth date", value_type: :date}, actor: system_actor)
Membership.create_custom_field(%{name: "Birth date", value_type: :date},
actor: system_actor
)
{:ok, email_field} =
Membership.create_custom_field(%{name: "Secondary email", value_type: :email}, actor: system_actor)
Membership.create_custom_field(%{name: "Secondary email", value_type: :email},
actor: system_actor
)
{:ok, _} =
Membership.update_settings(settings, %{
@ -229,6 +240,23 @@ defmodule MvWeb.JoinLiveTest do
assert has_element?(view, "input#join-field-#{date_field.id}[type='date']")
assert has_element?(view, "input#join-field-#{email_field.id}[type='email']")
end
@tag role: :unauthenticated
test "renders standard date member fields with date input type", %{conn: conn} do
{:ok, settings} = Membership.get_settings()
{:ok, _} =
Membership.update_settings(settings, %{
join_form_enabled: true,
join_form_field_ids: ["email", "join_date"],
join_form_field_required: %{"email" => true, "join_date" => false}
})
{:ok, view, _html} = live(conn, "/join")
assert has_element?(view, "input#join-field-join_date[type='date']")
refute has_element?(view, "input#join-field-join_date[type='text']")
end
end
describe "submit join form with typed custom fields" do