Tests: restore settings in on_exit to avoid leftover state
Setup + on_exit save/restore member_field_visibility and member_field_required in member, setting, index_component and form_error_handling tests.
This commit is contained in:
parent
50c4ab049d
commit
e9ed61a8fd
4 changed files with 68 additions and 36 deletions
|
|
@ -99,6 +99,23 @@ defmodule Mv.Membership.MemberTest do
|
|||
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", %{
|
||||
actor: actor
|
||||
} do
|
||||
|
|
@ -117,15 +134,6 @@ defmodule Mv.Membership.MemberTest do
|
|||
Membership.create_member(attrs, actor: actor)
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
|
||||
# Reset
|
||||
{:ok, settings} = Membership.get_settings()
|
||||
|
||||
Membership.update_single_member_field(settings,
|
||||
field: "first_name",
|
||||
show_in_overview: true,
|
||||
required: false
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -3,6 +3,23 @@ defmodule Mv.Membership.SettingTest do
|
|||
alias Mv.Membership
|
||||
|
||||
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
|
||||
# Settings should be a singleton resource
|
||||
assert {:ok, _settings} = Membership.get_settings()
|
||||
|
|
|
|||
|
|
@ -84,6 +84,23 @@ defmodule MvWeb.MemberFieldLive.IndexComponentTest do
|
|||
end
|
||||
|
||||
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
|
||||
{: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)
|
||||
assert html =~ "First name" or html =~ "first_name"
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
test "shows flash message when member creation fails with validation error", %{conn: conn} do
|
||||
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
|
||||
html =~ "first_name" or html =~ "First name" or html =~ "can't be blank" or
|
||||
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
|
||||
|
||||
test "shows flash message when member update fails", %{conn: conn} do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue