diff --git a/TESTING_GUIDE.md b/TESTING_GUIDE.md new file mode 100644 index 0000000..1e20a2e --- /dev/null +++ b/TESTING_GUIDE.md @@ -0,0 +1,122 @@ +# ๐ฏ TCG Vault Collaboration Testing Guide + +## ๐ฅ Test Accounts + +| User | Email | Password | Role | +|------|-------|----------|------| +| Admin | `admin@tcgvault.com` | `admin123` | Admin | +| Alice | `alice@tcgvault.com` | `alice123` | User | +| Bob | `bob@tcgvault.com` | `bob123` | User | + +## ๐ Sample Cards Available + +- **Lightning Bolt** (MTG) - $2.50 +- **Black Lotus** (MTG) - $25,000 +- **Pikachu** (Pokemon) - $8.50 +- **Charizard** (Pokemon) - $350 +- **Mickey Mouse** (Lorcana) - $45 +- **Elsa** (Lorcana) - $15.75 + +## ๐งช Testing Workflow + +### 1. **Login as Alice** +``` +Email: alice@tcgvault.com +Password: alice123 +``` + +### 2. **Create a Collection** +- Go to `/collections` +- Click "Create Collection" +- Fill out: + - Name: "Alice's Pokemon Collection" + - Description: "My favorite Pokemon cards" + - Image: (optional) `https://images.unsplash.com/photo-1606092195730-5d7b9af1efc5?w=1200` + - Show in Community: Toggle ON for public visibility + +### 3. **Add Cards to Collection** +- Navigate to the new collection (auto-redirect after creation) +- Use "Quick Add" search in empty state +- Search for "Pikachu" and click to add +- Search for "Charizard" and click to add +- See real-time collection value updates + +### 4. **Invite Bob as Collaborator** +- Click "Invite Collaborator" button +- Enter: `bob@tcgvault.com` +- Role: Collaborator (default) +- Message: "Help me build this Pokemon collection!" +- Click "Send Invitation" + +### 5. **Switch to Bob's Account** +- Logout and login as Bob +- Email: `bob@tcgvault.com` +- Password: `bob123` + +### 6. **Accept Invitation (Simulated)** +Since we're testing locally, simulate email acceptance: +- Go to: `/invite/accept?token=MOCK_TOKEN` +- Or manually add Bob to Alice's collection via database + +### 7. **Test Collaboration** +As Bob: +- Go to `/collections` - should see Alice's collection +- Open Alice's collection +- Add more cards using Quick Add +- See Bob's activity in collaboration panel + +### 8. **Test Permission Levels** +- Bob can add/edit cards (Collaborator role) +- Bob cannot delete collection (only Alice can) +- Collection shows as "Public" but editing requires invitation + +## ๐ง Quick Database Commands + +### Add Bob to Alice's Collection Manually: +```sql +-- Get collection ID (usually 1 for first collection) +SELECT id FROM collections WHERE name LIKE '%Alice%'; + +-- Add Bob as collaborator +INSERT INTO collection_permissions (collection_id, user_id, role, status) +VALUES (1, 3, 'editor', 'active'); +``` + +### Check Users: +```bash +node scripts/list-users.js +``` + +## ๐ฏ What to Test + +### โ Collection Management: +- [x] Create collection with image and visibility +- [x] Real-time stats (card count, value) +- [x] Only see your own collections initially + +### โ Card Management: +- [x] Search and add cards via Quick Add +- [x] Real card data with images and prices +- [x] Collection value updates automatically + +### โ Collaboration: +- [x] Invite collaborators with email +- [x] Permission indicators throughout UI +- [x] Activity logging for all changes + +### โ User Experience: +- [x] Beautiful empty states with guidance +- [x] Real-time search with dropdown results +- [x] Success confirmations and navigation +- [x] Permission-based UI elements + +## ๐ Ready to Test! + +The system now provides a complete, real-world testing environment with: +- Real user authentication +- Database-driven collections and cards +- Working collaboration system +- Beautiful UX with proper empty states +- Permission-based access control + +Start testing by logging in as Alice and creating your first collection! ๐ฎ diff --git a/components/AuthLayout.js b/components/AuthLayout.js new file mode 100644 index 0000000..4b27a04 --- /dev/null +++ b/components/AuthLayout.js @@ -0,0 +1,11 @@ +import { useTheme } from '../lib/theme-context'; + +export default function AuthLayout({ children }) { + const { theme } = useTheme(); + + return ( +
{user?.email || 'Guest'}
@@ -187,15 +146,77 @@ export default function Layout({ children, user = { email: 'me@randallstillwell. {user?.role || 'visitor'}