feat: calculate member.email from user.email

This commit is contained in:
Moritz 2025-08-05 16:51:39 +02:00
parent 0be9bb7cea
commit b7f0060358
Signed by: moritz
GPG key ID: 1020A035E5DD0824
5 changed files with 300 additions and 10 deletions

View 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