Configurable member field "required" flag and Vereinfacht-required fields closes #440 #441
4 changed files with 68 additions and 36 deletions
|
|
@ -99,6 +99,23 @@ defmodule Mv.Membership.MemberTest do
|
||||||
email: "john@example.com"
|
email: "john@example.com"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setup do
|
||||||
|
{:ok, settings} = Membership.get_settings()
|
||||||
|
saved_visibility = settings.member_field_visibility || %{}
|
||||||
|
saved_required = settings.member_field_required || %{}
|
||||||
|
|
||||||
|
on_exit(fn ->
|
||||||
|
{:ok, s} = Membership.get_settings()
|
||||||
|
|
||||||
|
Membership.update_settings(s, %{
|
||||||
|
member_field_visibility: saved_visibility,
|
||||||
|
member_field_required: saved_required
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
:ok
|
||||||
|
end
|
||||||
|
|
||||||
test "when first_name is required in settings, create without first_name fails", %{
|
test "when first_name is required in settings, create without first_name fails", %{
|
||||||
actor: actor
|
actor: actor
|
||||||
} do
|
} do
|
||||||
|
|
@ -117,15 +134,6 @@ defmodule Mv.Membership.MemberTest do
|
||||||
Membership.create_member(attrs, actor: actor)
|
Membership.create_member(attrs, actor: actor)
|
||||||
|
|
||||||
assert error_message(errors, :first_name) =~ "can't be blank"
|
assert error_message(errors, :first_name) =~ "can't be blank"
|
||||||
|
|
||||||
# Reset so other tests (e.g. "First name is optional") are not affected
|
|
||||||
{:ok, settings} = Membership.get_settings()
|
|
||||||
|
|
||||||
Membership.update_single_member_field(settings,
|
|
||||||
field: "first_name",
|
|
||||||
show_in_overview: true,
|
|
||||||
required: false
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "when first_name is required in settings, create with first_name succeeds", %{
|
test "when first_name is required in settings, create with first_name succeeds", %{
|
||||||
|
|
@ -141,15 +149,6 @@ defmodule Mv.Membership.MemberTest do
|
||||||
)
|
)
|
||||||
|
|
||||||
assert {:ok, _member} = Membership.create_member(@valid_attrs, actor: actor)
|
assert {:ok, _member} = Membership.create_member(@valid_attrs, actor: actor)
|
||||||
|
|
||||||
# Reset
|
|
||||||
{:ok, settings} = Membership.get_settings()
|
|
||||||
|
|
||||||
Membership.update_single_member_field(settings,
|
|
||||||
field: "first_name",
|
|
||||||
show_in_overview: true,
|
|
||||||
required: false
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,23 @@ defmodule Mv.Membership.SettingTest do
|
||||||
alias Mv.Membership
|
alias Mv.Membership
|
||||||
|
|
||||||
describe "Settings Resource" do
|
describe "Settings Resource" do
|
||||||
|
setup do
|
||||||
|
{:ok, settings} = Membership.get_settings()
|
||||||
|
saved_visibility = settings.member_field_visibility || %{}
|
||||||
|
saved_required = settings.member_field_required || %{}
|
||||||
|
|
||||||
|
on_exit(fn ->
|
||||||
|
{:ok, s} = Membership.get_settings()
|
||||||
|
|
||||||
|
Membership.update_settings(s, %{
|
||||||
|
member_field_visibility: saved_visibility,
|
||||||
|
member_field_required: saved_required
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
:ok
|
||||||
|
end
|
||||||
|
|
||||||
test "can read settings" do
|
test "can read settings" do
|
||||||
# Settings should be a singleton resource
|
# Settings should be a singleton resource
|
||||||
assert {:ok, _settings} = Membership.get_settings()
|
assert {:ok, _settings} = Membership.get_settings()
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,23 @@ defmodule MvWeb.MemberFieldLive.IndexComponentTest do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "required fields" do
|
describe "required fields" do
|
||||||
|
setup do
|
||||||
|
{:ok, settings} = Membership.get_settings()
|
||||||
|
saved_visibility = settings.member_field_visibility || %{}
|
||||||
|
saved_required = settings.member_field_required || %{}
|
||||||
|
|
||||||
|
on_exit(fn ->
|
||||||
|
{:ok, s} = Membership.get_settings()
|
||||||
|
|
||||||
|
Membership.update_settings(s, %{
|
||||||
|
member_field_visibility: saved_visibility,
|
||||||
|
member_field_required: saved_required
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
:ok
|
||||||
|
end
|
||||||
|
|
||||||
test "marks email as required (always from settings)", %{conn: conn} do
|
test "marks email as required (always from settings)", %{conn: conn} do
|
||||||
{:ok, _view, html} = live(conn, ~p"/settings")
|
{:ok, _view, html} = live(conn, ~p"/settings")
|
||||||
|
|
||||||
|
|
@ -107,15 +124,6 @@ defmodule MvWeb.MemberFieldLive.IndexComponentTest do
|
||||||
# First name row should show Required (and Optional for others)
|
# First name row should show Required (and Optional for others)
|
||||||
assert html =~ "First name" or html =~ "first_name"
|
assert html =~ "First name" or html =~ "first_name"
|
||||||
assert html =~ "Required"
|
assert html =~ "Required"
|
||||||
|
|
||||||
# Reset
|
|
||||||
{:ok, settings} = Membership.get_settings()
|
|
||||||
|
|
||||||
Membership.update_single_member_field(settings,
|
|
||||||
field: "first_name",
|
|
||||||
show_in_overview: true,
|
|
||||||
required: false
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "optional fields show Optional when not required in settings", %{conn: conn} do
|
test "optional fields show Optional when not required in settings", %{conn: conn} do
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,23 @@ defmodule MvWeb.MemberLive.FormErrorHandlingTest do
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
||||||
describe "error handling - flash messages" do
|
describe "error handling - flash messages" do
|
||||||
|
setup do
|
||||||
|
{:ok, settings} = Mv.Membership.get_settings()
|
||||||
|
saved_visibility = settings.member_field_visibility || %{}
|
||||||
|
saved_required = settings.member_field_required || %{}
|
||||||
|
|
||||||
|
on_exit(fn ->
|
||||||
|
{:ok, s} = Mv.Membership.get_settings()
|
||||||
|
|
||||||
|
Mv.Membership.update_settings(s, %{
|
||||||
|
member_field_visibility: saved_visibility,
|
||||||
|
member_field_required: saved_required
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
:ok
|
||||||
|
end
|
||||||
|
|
||||||
@describetag :ui
|
@describetag :ui
|
||||||
test "shows flash message when member creation fails with validation error", %{conn: conn} do
|
test "shows flash message when member creation fails with validation error", %{conn: conn} do
|
||||||
system_actor = Mv.Helpers.SystemActor.get_system_actor()
|
system_actor = Mv.Helpers.SystemActor.get_system_actor()
|
||||||
|
|
@ -102,15 +119,6 @@ defmodule MvWeb.MemberLive.FormErrorHandlingTest do
|
||||||
assert html =~ "error" or html =~ "Error" or html =~ "Fehler" or
|
assert html =~ "error" or html =~ "Error" or html =~ "Fehler" or
|
||||||
html =~ "first_name" or html =~ "First name" or html =~ "can't be blank" or
|
html =~ "first_name" or html =~ "First name" or html =~ "can't be blank" or
|
||||||
html =~ "darf nicht leer sein"
|
html =~ "darf nicht leer sein"
|
||||||
|
|
||||||
# Reset settings
|
|
||||||
{:ok, settings} = Mv.Membership.get_settings()
|
|
||||||
|
|
||||||
Mv.Membership.update_single_member_field(settings,
|
|
||||||
field: "first_name",
|
|
||||||
show_in_overview: true,
|
|
||||||
required: false
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
test "shows flash message when member update fails", %{conn: conn} do
|
test "shows flash message when member update fails", %{conn: conn} do
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue