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