Pass actor parameter in seeds and update test setup
Ensure cycle generation in seeds uses admin actor and update test to use global admin_user from ConnCase setup.
This commit is contained in:
parent
b409107350
commit
b0edd25da5
2 changed files with 20 additions and 21 deletions
|
|
@ -259,6 +259,7 @@ Enum.each(member_attrs_list, fn member_attrs ->
|
||||||
|> Ash.Changeset.for_update(:update_member, %{
|
|> Ash.Changeset.for_update(:update_member, %{
|
||||||
membership_fee_type_id: member_attrs_without_status.membership_fee_type_id
|
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)
|
|> Ash.update!(actor: admin_user_with_role)
|
||||||
else
|
else
|
||||||
member
|
member
|
||||||
|
|
@ -276,7 +277,10 @@ Enum.each(member_attrs_list, fn member_attrs ->
|
||||||
if Enum.empty?(member_with_cycles.membership_fee_cycles) do
|
if Enum.empty?(member_with_cycles.membership_fee_cycles) do
|
||||||
# Generate cycles
|
# Generate cycles
|
||||||
{:ok, new_cycles, _notifications} =
|
{: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
|
new_cycles
|
||||||
else
|
else
|
||||||
|
|
@ -422,7 +426,10 @@ Enum.with_index(linked_members)
|
||||||
if Enum.empty?(member_with_cycles.membership_fee_cycles) do
|
if Enum.empty?(member_with_cycles.membership_fee_cycles) do
|
||||||
# Generate cycles
|
# Generate cycles
|
||||||
{:ok, new_cycles, _notifications} =
|
{: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
|
new_cycles
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
|
||||||
|
|
||||||
require Ash.Query
|
require Ash.Query
|
||||||
|
|
||||||
setup %{conn: conn} do
|
# Use global setup from ConnCase which provides admin user with role
|
||||||
# Create admin user
|
# No custom setup needed
|
||||||
{: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
|
|
||||||
|
|
||||||
# Helper to create a membership fee type
|
# Helper to create a membership fee type
|
||||||
defp create_fee_type(attrs) do
|
defp create_fee_type(attrs) do
|
||||||
|
|
@ -41,7 +30,8 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
|
||||||
end
|
end
|
||||||
|
|
||||||
# Helper to create a member
|
# 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 = %{
|
default_attrs = %{
|
||||||
first_name: "Test",
|
first_name: "Test",
|
||||||
last_name: "Member",
|
last_name: "Member",
|
||||||
|
|
@ -50,9 +40,11 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
|
||||||
|
|
||||||
attrs = Map.merge(default_attrs, attrs)
|
attrs = Map.merge(default_attrs, attrs)
|
||||||
|
|
||||||
|
opts = if actor, do: [actor: actor], else: []
|
||||||
|
|
||||||
Member
|
Member
|
||||||
|> Ash.Changeset.for_create(:create_member, attrs)
|
|> Ash.Changeset.for_create(:create_member, attrs)
|
||||||
|> Ash.create!()
|
|> Ash.create!(opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "list display" do
|
describe "list display" do
|
||||||
|
|
@ -72,12 +64,12 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
|
||||||
assert html =~ "Yearly" || html =~ "Jährlich"
|
assert html =~ "Yearly" || html =~ "Jährlich"
|
||||||
end
|
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})
|
fee_type = create_fee_type(%{interval: :yearly})
|
||||||
|
|
||||||
# Create 3 members with this fee type
|
# Create 3 members with this fee type
|
||||||
Enum.each(1..3, fn _ ->
|
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)
|
end)
|
||||||
|
|
||||||
{:ok, _view, html} = live(conn, "/membership_fee_types")
|
{:ok, _view, html} = live(conn, "/membership_fee_types")
|
||||||
|
|
@ -111,9 +103,9 @@ defmodule MvWeb.MembershipFeeTypeLive.IndexTest do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "delete functionality" do
|
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})
|
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")
|
{:ok, _view, html} = live(conn, "/membership_fee_types")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue