invy/TESTING_NOTES.md

6.5 KiB

Bug Fixes Complete - Testing Guide

What Was Fixed 🔧

1. Duplicate Guest Finder (404 Error)

  • Problem: GET /guests/duplicates endpoint didn't exist
  • Solution: Added event-scoped endpoints with proper authorization
    • GET /events/{eventId}/guests/duplicates?by=phone|email|name - Find duplicates
    • POST /events/{eventId}/guests/merge - Merge duplicate guests
  • Backend Changes:
    • Added find_duplicate_guests() CRUD function (60 lines)
    • Added merge_guests() CRUD function (56 lines)
    • Added 2 new API endpoints in main.py (65 lines)
  • Frontend Changes:
    • Updated api.js - getDuplicates() and mergeGuests() now send eventId
    • Updated DuplicateManager.jsx - Accepts and passes eventId prop
    • Updated GuestList.jsx - Passes eventId to DuplicateManager component

2. WhatsApp Configuration

  • New File: .env.example with complete WhatsApp setup guide
  • Includes:
    • Where to get each Meta credential
    • Template variable explanations
    • Example Hebrew template structure
    • Production deployment checklist
    • Quick setup steps

3. Backend Server

  • Python syntax verified (no errors in crud.py, main.py)
  • Backend restarted with new duplicate endpoints loaded
  • Server running on http://localhost:8000

4. Frontend Build

  • Frontend rebuilt with all updates
  • New JavaScript bundle ready to serve

How to Test 🧪

Test 1: Duplicate Finder

  1. Open the app:

    http://localhost:5173/events/ee648859-2cbf-487a-bdce-bd780d90e6e3/guests
    

    (test event with 870 guests)

  2. Click: "🔍 חיפוש כפולויות" button

    • Should show a modal asking which field to check
    • Select "Phone" (טלפון)
  3. Expected Result:

    • Modal shows list of duplicate groups
    • Each group shows guests with same phone number
    • Count visible (e.g., "3 כפולויות")
  4. If it fails:

    • Check browser console (F12) for errors
    • Check backend logs for 404/500 errors
    • Verify eventId is being passed correctly

Test 2: WhatsApp Send Button

  1. In the same guest list:

    • Select 1 or more guests using checkboxes ☑️
  2. Button should appear:

    • "💬 שלח בוואטסאפ (n)" button appears above the guest table
    • Where n = number of selected guests
  3. Click the button:

    • WhatsApp modal should open
    • Shows:
      • Preview of selected guests
      • Form for Event details (partner names, venue, time, RSVP link)
      • Live preview of WhatsApp message in Hebrew
      • Send button
  4. If button doesn't appear:

    • Make sure you actually selected guests (checkbox checked)
    • Hard refresh in browser: Ctrl+Shift+R or Cmd+Shift+R
    • Check browser console (F12) for component errors
  5. If modal won't open:

    • Check browser console for errors
    • Verify event data loads properly

.env.example Setup 📝

Create your .env file from the template:

  1. Copy .env.example to .env (don't commit this to git!)

  2. Fill in these required fields:

    # Database (should already work locally)
    DATABASE_URL=postgresql://wedding_admin:Aa123456@localhost:5432/wedding_guests
    
    # Admin login (change in production!)
    ADMIN_USERNAME=admin
    ADMIN_PASSWORD=wedding2025
    
    # WhatsApp (from Meta Business Manager)
    WHATSAPP_ACCESS_TOKEN=EAAxxxxxxxx...  [get from Meta]
    WHATSAPP_PHONE_NUMBER_ID=123456789...  [from your WhatsApp number settings]
    WHATSAPP_API_VERSION=v20.0  [no change needed]
    WHATSAPP_TEMPLATE_NAME=wedding_invitation  [must match Meta exactly]
    WHATSAPP_LANGUAGE_CODE=he  [Hebrew - adjust if different]
    
  3. To get WhatsApp credentials:

    • Go to https://developers.facebook.com/
    • Select your WhatsApp Business Account
    • Navigate to Settings → Apps & Sites
    • Generate a permanent access token with these scopes:
      • whatsapp_business_messaging
      • whatsapp_business_management
    • Find your Phone Number ID in API Setup
    • Get your template name from Message Templates (must be APPROVED)

Files Modified Summary 📋

File Changes Status
backend/crud.py +116 lines: find_duplicate_guests(), merge_guests() Syntax OK
backend/main.py +65 lines: 2 duplicate endpoints with auth Syntax OK
frontend/src/api.js Updated getDuplicates(), mergeGuests() signatures Built
frontend/src/components/DuplicateManager.jsx Added eventId prop, updated API calls Built
frontend/src/components/GuestList.jsx Pass eventId to DuplicateManager Built
.env.example NEW: Complete setup guide + credentials Created

Next Steps 📌

  • Fill in .env file with your WhatsApp credentials
  • Test duplicate finder in guest list
  • Test WhatsApp button visibility
  • Test WhatsApp sending (requires valid Meta credentials)
  • Verify both Hebrew RTL layouts display correctly
  • Check browser console for any warnings

Troubleshooting 🆘

Backend won't start?

# Check Python syntax
python -m py_compile backend/crud.py backend/main.py

# Look for database connection errors
# Make sure PostgreSQL is running
# Check DATABASE_URL in .env

Duplicate finder returns 404?

  • Clear browser cache: F12 → Right-click refresh → "Empty cache and hard refresh"
  • Check backend logs for "GET /events/{eventId}/guests/duplicates"
  • Verify eventId is being passed in API call

WhatsApp button not visible?

  1. Make sure you select at least 1 guest (checkbox)
  2. Hard refresh browser
  3. Check console for component errors
  4. Verify GuestList.jsx has the button code

WhatsApp not sending?

  • Verify WHATSAPP_ACCESS_TOKEN in .env
  • Verify WHATSAPP_PHONE_NUMBER_ID is correct
  • Check that template is APPROVED in Meta (not pending)
  • Check backend logs for API errors

Key Endpoints Created 🔑

Duplicate Management

GET /events/{event_id}/guests/duplicates?by=phone
  Response: { "duplicates": { "phone_number": [guest1, guest2, ...], ... } }

POST /events/{event_id}/guests/merge
  Body: { "keep_id": "uuid", "merge_ids": ["uuid1", "uuid2", ...] }
  Response: { "success": true, "message": "Merged X guests" }

WhatsApp Sending

POST /events/{event_id}/guests/{guest_id}/whatsapp/invite
  Single guest invitation

POST /events/{event_id}/whatsapp/invite
  Bulk guest invitations (rate-limited with 0.5s delay)

Status: All fixes applied, backend restarted, frontend rebuilt Ready to test: Yes Need from you: WhatsApp credentials in .env file