Use admin_user instead of system_actor in LiveView tests

This commit is contained in:
Moritz 2026-01-24 02:10:08 +01:00
parent 195f1dbc88
commit fcca4b0b89
Signed by: moritz
GPG key ID: 1020A035E5DD0824
2 changed files with 67 additions and 64 deletions

View file

@ -15,9 +15,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
# No custom setup needed
# Helper to create a membership fee type
defp create_fee_type(attrs) do
system_actor = Mv.Helpers.SystemActor.get_system_actor()
# Uses admin_user to test permissions (UI-/Permissions-nah)
defp create_fee_type(attrs, admin_user) do
default_attrs = %{
name: "Test Fee Type #{System.unique_integer([:positive])}",
amount: Decimal.new("50.00"),
@ -28,7 +27,7 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
MembershipFeeType
|> Ash.Changeset.for_create(:create, attrs)
|> Ash.create!(actor: system_actor)
|> Ash.create!(actor: admin_user)
end
# Helper to create a member
@ -50,12 +49,21 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
end
describe "list display" do
test "displays all membership fee types with correct data", %{conn: conn} do
test "displays all membership fee types with correct data", %{
conn: conn,
current_user: admin_user
} do
_fee_type1 =
create_fee_type(%{name: "Regular", amount: Decimal.new("60.00"), interval: :yearly})
create_fee_type(
%{name: "Regular", amount: Decimal.new("60.00"), interval: :yearly},
admin_user
)
_fee_type2 =
create_fee_type(%{name: "Reduced", amount: Decimal.new("30.00"), interval: :yearly})
create_fee_type(
%{name: "Reduced", amount: Decimal.new("30.00"), interval: :yearly},
admin_user
)
{:ok, _view, html} = live(conn, "/membership_fee_types")
@ -67,7 +75,7 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
end
test "member count column shows correct count", %{conn: conn, current_user: admin_user} do
fee_type = create_fee_type(%{interval: :yearly})
fee_type = create_fee_type(%{interval: :yearly}, admin_user)
# Create 3 members with this fee type
Enum.each(1..3, fn _ ->
@ -90,8 +98,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
assert to == "/membership_fee_types/new"
end
test "edit button per row navigates to edit form", %{conn: conn} do
fee_type = create_fee_type(%{interval: :yearly})
test "edit button per row navigates to edit form", %{conn: conn, current_user: admin_user} do
fee_type = create_fee_type(%{interval: :yearly}, admin_user)
{:ok, view, _html} = live(conn, "/membership_fee_types")
@ -106,7 +114,7 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
describe "delete functionality" do
test "delete button disabled if type is in use", %{conn: conn, current_user: admin_user} do
fee_type = create_fee_type(%{interval: :yearly})
fee_type = create_fee_type(%{interval: :yearly}, admin_user)
create_member(%{membership_fee_type_id: fee_type.id}, admin_user)
{:ok, _view, html} = live(conn, "/membership_fee_types")
@ -115,8 +123,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
assert html =~ "disabled" || html =~ "cursor-not-allowed"
end
test "delete button works if type is not in use", %{conn: conn} do
fee_type = create_fee_type(%{interval: :yearly})
test "delete button works if type is not in use", %{conn: conn, current_user: admin_user} do
fee_type = create_fee_type(%{interval: :yearly}, admin_user)
# No members assigned
{:ok, view, _html} = live(conn, "/membership_fee_types")
@ -126,9 +134,12 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
|> element("button[phx-click='delete'][phx-value-id='#{fee_type.id}']")
|> render_click()
# Type should be deleted
# Type should be deleted - use admin_user to test permissions
assert {:error, %Ash.Error.Invalid{errors: [%Ash.Error.Query.NotFound{}]}} =
Ash.get(MembershipFeeType, fee_type.id, domain: Mv.MembershipFees)
Ash.get(MembershipFeeType, fee_type.id,
domain: Mv.MembershipFees,
actor: admin_user
)
end
end