diff --git a/priv/repo/seeds.exs b/priv/repo/seeds.exs index 7f5b322..b89ba3c 100644 --- a/priv/repo/seeds.exs +++ b/priv/repo/seeds.exs @@ -259,6 +259,7 @@ Enum.each(member_attrs_list, fn member_attrs -> |> Ash.Changeset.for_update(:update_member, %{ membership_fee_type_id: member_attrs_without_status.membership_fee_type_id }) + |> Ash.Changeset.put_context(:actor, admin_user_with_role) |> Ash.update!(actor: admin_user_with_role) else member @@ -276,7 +277,10 @@ Enum.each(member_attrs_list, fn member_attrs -> if Enum.empty?(member_with_cycles.membership_fee_cycles) do # Generate cycles {:ok, new_cycles, _notifications} = - CycleGenerator.generate_cycles_for_member(final_member.id, skip_lock?: true) + CycleGenerator.generate_cycles_for_member(final_member.id, + skip_lock?: true, + actor: admin_user_with_role + ) new_cycles else @@ -422,7 +426,10 @@ Enum.with_index(linked_members) if Enum.empty?(member_with_cycles.membership_fee_cycles) do # Generate cycles {:ok, new_cycles, _notifications} = - CycleGenerator.generate_cycles_for_member(final_member.id, skip_lock?: true) + CycleGenerator.generate_cycles_for_member(final_member.id, + skip_lock?: true, + actor: admin_user_with_role + ) new_cycles else diff --git a/test/mv_web/live/membership_fee_type_live/index_test.exs b/test/mv_web/live/membership_fee_type_live/index_test.exs index bb10a13..9c5ad55 100644 --- a/test/mv_web/live/membership_fee_type_live/index_test.exs +++ b/test/mv_web/live/membership_fee_type_live/index_test.exs @@ -11,19 +11,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do require Ash.Query - setup %{conn: conn} do - # Create admin user - {:ok, user} = - Mv.Accounts.User - |> Ash.Changeset.for_create(:register_with_password, %{ - email: "admin#{System.unique_integer([:positive])}@mv.local", - password: "testpassword123" - }) - |> Ash.create() - - authenticated_conn = conn_with_password_user(conn, user) - %{conn: authenticated_conn, user: user} - end + # Use global setup from ConnCase which provides admin user with role + # No custom setup needed # Helper to create a membership fee type defp create_fee_type(attrs) do @@ -41,7 +30,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do end # Helper to create a member - defp create_member(attrs) do + # Uses admin actor from global setup to ensure authorization + defp create_member(attrs, actor) do default_attrs = %{ first_name: "Test", last_name: "Member", @@ -50,9 +40,11 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do attrs = Map.merge(default_attrs, attrs) + opts = if actor, do: [actor: actor], else: [] + Member |> Ash.Changeset.for_create(:create_member, attrs) - |> Ash.create!() + |> Ash.create!(opts) end describe "list display" do @@ -72,12 +64,12 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do assert html =~ "Yearly" || html =~ "Jährlich" end - test "member count column shows correct count", %{conn: conn} do + test "member count column shows correct count", %{conn: conn, current_user: admin_user} do fee_type = create_fee_type(%{interval: :yearly}) # Create 3 members with this fee type Enum.each(1..3, fn _ -> - create_member(%{membership_fee_type_id: fee_type.id}) + create_member(%{membership_fee_type_id: fee_type.id}, admin_user) end) {:ok, _view, html} = live(conn, "/membership_fee_types") @@ -111,9 +103,9 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do end describe "delete functionality" do - test "delete button disabled if type is in use", %{conn: conn} do + test "delete button disabled if type is in use", %{conn: conn, current_user: admin_user} do fee_type = create_fee_type(%{interval: :yearly}) - create_member(%{membership_fee_type_id: fee_type.id}) + create_member(%{membership_fee_type_id: fee_type.id}, admin_user) {:ok, _view, html} = live(conn, "/membership_fee_types")