Date: 2026-08-06
Scope: Multi-member family survival when one account is deleted
Depends on: migration 20260806120000_delete_account_family_cleanup + deployed delete-account Edge Function
supabase db push or MCP apply)delete-account Edge Function redeployed| Rule | Expected |
|---|---|
| Delete one of two members | Family row remains; other member keeps membership + family data |
| Delete last member | Family row deleted (cascades family-scoped data) |
| Owner deletes while others remain | families.created_by reassigned; successor promoted to admin if needed |
family_id (SQL or Family debug) and confirm:
created_by / adminmember-- Replace :family_id and :member_user_id
select id, created_by from public.families where id = :family_id;
-- expect 1 row, created_by = member
select user_id, role from public.family_members where family_id = :family_id;
-- expect only member row; role = admin
select count(*) from public.families where id = :family_id;
-- expect 0
created_by / admin.select user_id, role from public.family_members where family_id = :family_id;
-- expect only A
select created_by from public.families where id = :family_id;
-- expect A
Run in SQL editor on a dev project (script rolls back):
# From GuruDeSalud/supabase
# Paste contents of tests/delete_account_family_cleanup_fixtures.sql into SQL Editor
Expect NOTICE: PASS Case A/B/C and summary row:
surviving_family_count=1, surviving_member_count=1, dissolved_family_count=0.
admin after owner deletedelete-account returns 500 with “Failed to leave family before delete”families.created_by still points at deleted user (RESTRICT should block delete)