Caluru

Delete-account family cleanup — manual QA checklist

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

Prerequisites

Product rules (acceptance)

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

Checklist A — Two-member family, owner deletes

  1. Device A creates a family and invites Device B; B accepts.
  2. Note family_id (SQL or Family debug) and confirm:
    • A is created_by / admin
    • B is member
  3. Seed shared data (optional but preferred): planned meal, shopping item, shared recipe.
  4. Device A: Profile → Preferences → Delete account → confirm.
  5. Device A: lands in clean / re-onboard state.
  6. Device B: pull-to-refresh Family — family still exists, A gone, B still a member.
  7. SQL verify:
-- 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
  1. Shared family data still visible for B (if seeded).

Checklist B — Last member deletes

  1. With only one member left in a family (use leftover from A, or create solo family).
  2. That user deletes account.
  3. SQL verify:
select count(*) from public.families where id = :family_id;
-- expect 0

Checklist C — Non-owner member deletes first

  1. Fresh two-member family (A owner, B member).
  2. Device B deletes account.
  3. Device A: family remains; B removed; A still 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

SQL fixture regression (no devices)

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.

Fail signals