Use admin_user instead of system_actor in LiveView tests
This commit is contained in:
parent
d807577822
commit
2d7461e36f
2 changed files with 67 additions and 64 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue