Tests: use code interface for Member create/update (actor propagation)
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
66f1965af4
commit
d77096c800
32 changed files with 733 additions and 818 deletions
|
|
@ -531,10 +531,8 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
}
|
||||
|
||||
attrs = Map.merge(default_attrs, attrs)
|
||||
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, attrs)
|
||||
|> Ash.create!(actor: actor)
|
||||
{:ok, member} = Mv.Membership.create_member(attrs, actor: actor)
|
||||
member
|
||||
end
|
||||
|
||||
test "filter shows only members with paid status in last cycle", %{conn: conn} do
|
||||
|
|
@ -1127,18 +1125,15 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
|
||||
# Helper to create a member with a boolean custom field value
|
||||
defp create_member_with_boolean_value(member_attrs, custom_field, value, actor) do
|
||||
{:ok, member} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(
|
||||
:create_member,
|
||||
%{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
}
|
||||
|> Map.merge(member_attrs)
|
||||
)
|
||||
|> Ash.create(actor: actor)
|
||||
attrs =
|
||||
%{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
}
|
||||
|> Map.merge(member_attrs)
|
||||
|
||||
{:ok, member} = Mv.Membership.create_member(attrs, actor: actor)
|
||||
|
||||
{:ok, _cfv} =
|
||||
Mv.Membership.CustomFieldValue
|
||||
|
|
@ -1182,13 +1177,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
boolean_field = create_boolean_custom_field()
|
||||
|
||||
{:ok, member} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
# Create CustomFieldValue with map format (Ash expects _union_type and _union_value)
|
||||
{:ok, _cfv} =
|
||||
|
|
@ -1215,13 +1211,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
boolean_field = create_boolean_custom_field()
|
||||
|
||||
{:ok, member} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
# Member has no custom field value for this field
|
||||
member = member |> Ash.load!(:custom_field_values, actor: system_actor)
|
||||
|
|
@ -1238,13 +1235,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
boolean_field = create_boolean_custom_field()
|
||||
|
||||
{:ok, member} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
# Create CustomFieldValue with nil value (edge case)
|
||||
{:ok, _cfv} =
|
||||
|
|
@ -1271,13 +1269,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
boolean_field = create_boolean_custom_field()
|
||||
|
||||
{:ok, member} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
email: "test.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
# Create string custom field value (not boolean)
|
||||
{:ok, _cfv} =
|
||||
|
|
@ -1320,13 +1319,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
)
|
||||
|
||||
{:ok, member_without_value} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
member_without_value =
|
||||
member_without_value |> Ash.load!(:custom_field_values, actor: system_actor)
|
||||
|
|
@ -1370,13 +1370,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
)
|
||||
|
||||
{:ok, member_without_value} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
member_without_value =
|
||||
member_without_value |> Ash.load!(:custom_field_values, actor: system_actor)
|
||||
|
|
@ -1447,13 +1448,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
|
||||
# Member with both fields = true
|
||||
{:ok, member_both_true} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "BothTrue",
|
||||
last_name: "Member",
|
||||
email: "bothtrue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "BothTrue",
|
||||
last_name: "Member",
|
||||
email: "bothtrue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
{:ok, _cfv1} =
|
||||
Mv.Membership.CustomFieldValue
|
||||
|
|
@ -1477,13 +1479,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
|
||||
# Member with field1 = true, field2 = false
|
||||
{:ok, member_mixed} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "Mixed",
|
||||
last_name: "Member",
|
||||
email: "mixed.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "Mixed",
|
||||
last_name: "Member",
|
||||
email: "mixed.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
{:ok, _cfv3} =
|
||||
Mv.Membership.CustomFieldValue
|
||||
|
|
@ -1580,13 +1583,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
)
|
||||
|
||||
{:ok, _member_without_value} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
# Test true filter
|
||||
{:ok, _view, html_true} =
|
||||
|
|
@ -1615,14 +1619,15 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
|
||||
# Member with true boolean value and paid status
|
||||
{:ok, member_paid_true} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "PaidTrue",
|
||||
last_name: "Member",
|
||||
email: "paidtrue.member.#{System.unique_integer([:positive])}@example.com",
|
||||
membership_fee_type_id: fee_type.id
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "PaidTrue",
|
||||
last_name: "Member",
|
||||
email: "paidtrue.member.#{System.unique_integer([:positive])}@example.com",
|
||||
membership_fee_type_id: fee_type.id
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
{:ok, _cfv} =
|
||||
Mv.Membership.CustomFieldValue
|
||||
|
|
@ -1642,14 +1647,15 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
|
||||
# Member with true boolean value but unpaid status
|
||||
{:ok, member_unpaid_true} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "UnpaidTrue",
|
||||
last_name: "Member",
|
||||
email: "unpaidtrue.member.#{System.unique_integer([:positive])}@example.com",
|
||||
membership_fee_type_id: fee_type.id
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "UnpaidTrue",
|
||||
last_name: "Member",
|
||||
email: "unpaidtrue.member.#{System.unique_integer([:positive])}@example.com",
|
||||
membership_fee_type_id: fee_type.id
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
{:ok, _cfv2} =
|
||||
Mv.Membership.CustomFieldValue
|
||||
|
|
@ -1730,13 +1736,14 @@ defmodule MvWeb.MemberLive.IndexTest do
|
|||
)
|
||||
|
||||
{:ok, _member_without_value} =
|
||||
Mv.Membership.Member
|
||||
|> Ash.Changeset.for_create(:create_member, %{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
})
|
||||
|> Ash.create(actor: system_actor)
|
||||
Mv.Membership.create_member(
|
||||
%{
|
||||
first_name: "NoValue",
|
||||
last_name: "Member",
|
||||
email: "novalue.member.#{System.unique_integer([:positive])}@example.com"
|
||||
},
|
||||
actor: system_actor
|
||||
)
|
||||
|
||||
# Test that filter works even though field is not visible in overview
|
||||
{:ok, _view, html_true} =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue