feat: calculate member.email from user.email
This commit is contained in:
parent
0be9bb7cea
commit
b7f0060358
5 changed files with 300 additions and 10 deletions
53
test/membership/member_email_test.exs
Normal file
53
test/membership/member_email_test.exs
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
defmodule Mv.Membership.MemberEmailTest do
|
||||
use Mv.DataCase, async: true
|
||||
alias Mv.Membership
|
||||
|
||||
describe "member_email and computed email field" do
|
||||
test "email shows member_email when no user is assigned" do
|
||||
{:ok, member} =
|
||||
Membership.create_member(%{
|
||||
first_name: "Test",
|
||||
last_name: "Member",
|
||||
member_email: "memberonly@example.com"
|
||||
})
|
||||
|
||||
# Load the email calculation
|
||||
member = Ash.load!(member, :email, domain: Membership)
|
||||
|
||||
assert member.member_email == "memberonly@example.com"
|
||||
assert member.email == "memberonly@example.com"
|
||||
end
|
||||
|
||||
test "updating member_email updates the computed email when no user is assigned" do
|
||||
{:ok, member} =
|
||||
Membership.create_member(%{
|
||||
first_name: "Update",
|
||||
last_name: "Test",
|
||||
member_email: "old@example.com"
|
||||
})
|
||||
|
||||
{:ok, member} =
|
||||
Membership.update_member(member, %{member_email: "new@example.com"})
|
||||
|
||||
# Load the email calculation
|
||||
member = Ash.load!(member, :email, domain: Membership)
|
||||
|
||||
assert member.member_email == "new@example.com"
|
||||
assert member.email == "new@example.com"
|
||||
end
|
||||
|
||||
test "member can be created without member_email" do
|
||||
{:ok, member} =
|
||||
Membership.create_member(%{
|
||||
first_name: "No",
|
||||
last_name: "Email"
|
||||
})
|
||||
|
||||
# Load the email calculation
|
||||
member = Ash.load!(member, :email, domain: Membership)
|
||||
|
||||
assert member.member_email == nil
|
||||
assert member.email == nil
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue