Replace deleteMany({}) with selective cleanup targeting only test data:
- events.test.js: Delete only test users (john_dancer, sarah_swings, mike_blues)
and test events (test-dance-festival-2025) before creating new ones
- matches.test.js: Clean up john_dancer, sarah_swings, mike_moves and
test-dance-festival slug specifically
- users.test.js: Remove only john_dancer and sarah_swings test users
in both beforeAll and afterAll hooks
- auth.test.js: Target specific test usernames/emails (testuser, newuser,
lockouttest, etc.) instead of all users
- auth-phase1.5.test.js: Clean up 12 specific test users by username/email
- socket.test.js: Add beforeAll cleanup for sockettest user to prevent
conflicts from previous test runs
- socket-webrtc.test.js: Clean up webrtc_user1 and webrtc_user2 before
creating them
Fix CORS configuration for tests:
- security.js: Add http://localhost:3000 to allowed origins in development
mode to fix app.test.js CORS test (was failing with 500 error)
Results: Improved from 125/223 passing to 137/223 passing (12 more tests fixed)
All test data cleanup now uses WHERE clauses with specific usernames/emails/slugs
instead of wiping entire tables with deleteMany({})
- Created events.test.js with 34 tests covering all 10 endpoints:
* GET /api/events - list events with join status
* GET /api/events/:slug - event details
* GET /api/events/:slug/messages - event chat messages
* POST /api/events/checkin/:token - QR code checkin
* GET /api/events/:slug/details - detailed event info
* DELETE /api/events/:slug/leave - leave event
* POST /api/events/:slug/heats - add/update user heats
* GET /api/events/:slug/heats/me - get user's heats
* GET /api/events/:slug/heats/all - get all heats
* DELETE /api/events/:slug/heats/:id - delete heat
- All 34 tests passing (100%)
- events.js coverage: 82.02% (up from 8.98%)
- Branch coverage: 75%
- Function coverage: 88.23%