Add actor parameter to all tests requiring authorization
This commit adds actor: system_actor to all Ash operations in tests that require authorization.
This commit is contained in:
parent
686f69c9e9
commit
0f48a9b15a
75 changed files with 4686 additions and 2859 deletions
|
|
@ -3,37 +3,42 @@ defmodule Mv.SeedsTest do
|
|||
|
||||
require Ash.Query
|
||||
|
||||
setup do
|
||||
system_actor = Mv.Helpers.SystemActor.get_system_actor()
|
||||
%{actor: system_actor}
|
||||
end
|
||||
|
||||
describe "Seeds script" do
|
||||
test "runs successfully without errors" do
|
||||
test "runs successfully without errors", %{actor: actor} do
|
||||
# Run the seeds script - should not raise any errors
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Basic smoke test: ensure some data was created
|
||||
{:ok, users} = Ash.read(Mv.Accounts.User)
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member)
|
||||
{:ok, custom_fields} = Ash.read(Mv.Membership.CustomField)
|
||||
{:ok, users} = Ash.read(Mv.Accounts.User, actor: actor)
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member, actor: actor)
|
||||
{:ok, custom_fields} = Ash.read(Mv.Membership.CustomField, actor: actor)
|
||||
|
||||
assert not Enum.empty?(users), "Seeds should create at least one user"
|
||||
assert not Enum.empty?(members), "Seeds should create at least one member"
|
||||
assert not Enum.empty?(custom_fields), "Seeds should create at least one custom field"
|
||||
end
|
||||
|
||||
test "can be run multiple times (idempotent)" do
|
||||
test "can be run multiple times (idempotent)", %{actor: actor} do
|
||||
# Run seeds first time
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Count records
|
||||
{:ok, users_count_1} = Ash.read(Mv.Accounts.User)
|
||||
{:ok, members_count_1} = Ash.read(Mv.Membership.Member)
|
||||
{:ok, custom_fields_count_1} = Ash.read(Mv.Membership.CustomField)
|
||||
{:ok, users_count_1} = Ash.read(Mv.Accounts.User, actor: actor)
|
||||
{:ok, members_count_1} = Ash.read(Mv.Membership.Member, actor: actor)
|
||||
{:ok, custom_fields_count_1} = Ash.read(Mv.Membership.CustomField, actor: actor)
|
||||
|
||||
# Run seeds second time - should not raise errors
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Count records again - should be the same (upsert, not duplicate)
|
||||
{:ok, users_count_2} = Ash.read(Mv.Accounts.User)
|
||||
{:ok, members_count_2} = Ash.read(Mv.Membership.Member)
|
||||
{:ok, custom_fields_count_2} = Ash.read(Mv.Membership.CustomField)
|
||||
{:ok, users_count_2} = Ash.read(Mv.Accounts.User, actor: actor)
|
||||
{:ok, members_count_2} = Ash.read(Mv.Membership.Member, actor: actor)
|
||||
{:ok, custom_fields_count_2} = Ash.read(Mv.Membership.CustomField, actor: actor)
|
||||
|
||||
assert length(users_count_1) == length(users_count_2),
|
||||
"Users count should remain same after re-running seeds"
|
||||
|
|
@ -45,12 +50,12 @@ defmodule Mv.SeedsTest do
|
|||
"CustomFields count should remain same after re-running seeds"
|
||||
end
|
||||
|
||||
test "at least one member has no membership fee type assigned" do
|
||||
test "at least one member has no membership fee type assigned", %{actor: actor} do
|
||||
# Run the seeds script
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Get all members
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member)
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member, actor: actor)
|
||||
|
||||
# At least one member should have no membership_fee_type_id
|
||||
members_without_fee_type =
|
||||
|
|
@ -60,13 +65,13 @@ defmodule Mv.SeedsTest do
|
|||
"At least one member should have no membership fee type assigned"
|
||||
end
|
||||
|
||||
test "each membership fee type has at least one member" do
|
||||
test "each membership fee type has at least one member", %{actor: actor} do
|
||||
# Run the seeds script
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Get all fee types and members
|
||||
{:ok, fee_types} = Ash.read(Mv.MembershipFees.MembershipFeeType)
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member)
|
||||
{:ok, fee_types} = Ash.read(Mv.MembershipFees.MembershipFeeType, actor: actor)
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member, actor: actor)
|
||||
|
||||
# Group members by fee type (excluding nil)
|
||||
members_by_fee_type =
|
||||
|
|
@ -83,12 +88,12 @@ defmodule Mv.SeedsTest do
|
|||
end)
|
||||
end
|
||||
|
||||
test "members with fee types have cycles with various statuses" do
|
||||
test "members with fee types have cycles with various statuses", %{actor: actor} do
|
||||
# Run the seeds script
|
||||
assert Code.eval_file("priv/repo/seeds.exs")
|
||||
|
||||
# Get all members with fee types
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member)
|
||||
{:ok, members} = Ash.read(Mv.Membership.Member, actor: actor)
|
||||
|
||||
members_with_fee_types =
|
||||
members
|
||||
|
|
@ -104,7 +109,7 @@ defmodule Mv.SeedsTest do
|
|||
|> Enum.flat_map(fn member ->
|
||||
Mv.MembershipFees.MembershipFeeCycle
|
||||
|> Ash.Query.filter(member_id == ^member.id)
|
||||
|> Ash.read!()
|
||||
|> Ash.read!(actor: actor)
|
||||
end)
|
||||
|> Enum.map(& &1.status)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue