test: fix flaky test
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Simon 2026-05-06 14:29:00 +02:00
parent f8e1d39964
commit a62fceaf28
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2

View file

@ -16,9 +16,13 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
describe "Relationships" do
test "member has many_to_many groups relationship (load with preloading)", %{actor: actor} do
{:ok, member} = Membership.create_member(%{email: "test@test.com"}, actor: actor)
{:ok, group1} = Membership.create_group(%{name: "Group One"}, actor: actor)
{:ok, group2} = Membership.create_group(%{name: "Group Two"}, actor: actor)
{:ok, member} = Membership.create_member(%{email: unique_email("member")}, actor: actor)
{:ok, group1} =
Membership.create_group(%{name: unique_group_name("Group One")}, actor: actor)
{:ok, group2} =
Membership.create_group(%{name: unique_group_name("Group Two")}, actor: actor)
{:ok, _mg1} =
Membership.create_member_group(%{member_id: member.id, group_id: group1.id},
@ -40,9 +44,11 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
end
test "load multiple members with groups preloaded (N+1 prevention)", %{actor: actor} do
{:ok, member1} = Membership.create_member(%{email: "member1@test.com"}, actor: actor)
{:ok, member2} = Membership.create_member(%{email: "member2@test.com"}, actor: actor)
{:ok, group} = Membership.create_group(%{name: "Test Group"}, actor: actor)
{:ok, member1} = Membership.create_member(%{email: unique_email("member1")}, actor: actor)
{:ok, member2} = Membership.create_member(%{email: unique_email("member2")}, actor: actor)
{:ok, group} =
Membership.create_group(%{name: unique_group_name("Test Group")}, actor: actor)
{:ok, _mg1} =
Membership.create_member_group(%{member_id: member1.id, group_id: group.id},
@ -70,8 +76,10 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
describe "Member-Group Association Operations" do
test "add member to group via Ash API", %{actor: actor} do
{:ok, member} = Membership.create_member(%{email: "test@test.com"}, actor: actor)
{:ok, group} = Membership.create_group(%{name: "Test Group"}, actor: actor)
{:ok, member} = Membership.create_member(%{email: unique_email("member")}, actor: actor)
{:ok, group} =
Membership.create_group(%{name: unique_group_name("Test Group")}, actor: actor)
assert {:ok, member_group} =
Membership.create_member_group(%{member_id: member.id, group_id: group.id},
@ -83,8 +91,10 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
end
test "remove member from group via Ash API", %{actor: actor} do
{:ok, member} = Membership.create_member(%{email: "test@test.com"}, actor: actor)
{:ok, group} = Membership.create_group(%{name: "Test Group"}, actor: actor)
{:ok, member} = Membership.create_member(%{email: unique_email("member")}, actor: actor)
{:ok, group} =
Membership.create_group(%{name: unique_group_name("Test Group")}, actor: actor)
{:ok, member_group} =
Membership.create_member_group(%{member_id: member.id, group_id: group.id},
@ -107,10 +117,16 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
end
test "add member to multiple groups in single operation", %{actor: actor} do
{:ok, member} = Membership.create_member(%{email: "test@test.com"}, actor: actor)
{:ok, group1} = Membership.create_group(%{name: "Group One"}, actor: actor)
{:ok, group2} = Membership.create_group(%{name: "Group Two"}, actor: actor)
{:ok, group3} = Membership.create_group(%{name: "Group Three"}, actor: actor)
{:ok, member} = Membership.create_member(%{email: unique_email("member")}, actor: actor)
{:ok, group1} =
Membership.create_group(%{name: unique_group_name("Group One")}, actor: actor)
{:ok, group2} =
Membership.create_group(%{name: unique_group_name("Group Two")}, actor: actor)
{:ok, group3} =
Membership.create_group(%{name: unique_group_name("Group Three")}, actor: actor)
# Add to all groups
{:ok, _mg1} =
@ -138,8 +154,10 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
describe "Edge Cases" do
test "adding member to same group twice fails (duplicate prevention)", %{actor: actor} do
{:ok, member} = Membership.create_member(%{email: "test@test.com"}, actor: actor)
{:ok, group} = Membership.create_group(%{name: "Test Group"}, actor: actor)
{:ok, member} = Membership.create_member(%{email: unique_email("member")}, actor: actor)
{:ok, group} =
Membership.create_group(%{name: unique_group_name("Test Group")}, actor: actor)
{:ok, _mg1} =
Membership.create_member_group(%{member_id: member.id, group_id: group.id},
@ -154,8 +172,10 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
end
test "removing member from group they're not in (idempotent, no error)", %{actor: actor} do
{:ok, member} = Membership.create_member(%{email: "test@test.com"}, actor: actor)
{:ok, group} = Membership.create_group(%{name: "Test Group"}, actor: actor)
{:ok, member} = Membership.create_member(%{email: unique_email("member")}, actor: actor)
{:ok, group} =
Membership.create_group(%{name: unique_group_name("Test Group")}, actor: actor)
# Verify no association exists
{:ok, nil} =
@ -194,4 +214,12 @@ defmodule Mv.Membership.MemberGroupsRelationshipTest do
assert result == :ok || match?({:error, _}, result)
end
end
defp unique_email(prefix) do
"#{prefix}-#{System.unique_integer([:positive])}@test.com"
end
defp unique_group_name(prefix) do
"#{prefix} #{System.unique_integer([:positive])}"
end
end