# MaplePress Plugin Testing Guide

## Prerequisites

- WordPress running at http://localhost:8081
- MaplePress backend running at http://localhost:8000 (or update API URL in settings)
- WordPress admin access

## Test Scenarios

### Scenario 1: Fresh Installation (Activation Flow)

**Steps:**

1. **Deactivate the plugin** (if already activated)
   - Go to WordPress Admin → Plugins
   - Find "MaplePress"
   - Click "Deactivate"

2. **Activate the plugin**
   - Click "Activate" on MaplePress
   - **Expected:** Auto-redirect to Settings → MaplePress

3. **Verify Welcome Screen**
   - **Expected:** See "🚀 Welcome to MaplePress!" banner
   - **Expected:** See 4-step setup instructions
   - **Expected:** See "Sign Up at MaplePress.io" button
   - **Expected:** See "Login to Existing Account" button

4. **Verify Admin Notice** (if you navigate away)
   - Go to Dashboard or any other admin page
   - **Expected:** See yellow warning banner at top
   - **Expected:** Message says "MaplePress Setup Required"
   - **Expected:** Contains links to sign up and configure

### Scenario 2: API Key Entry (Success Path)

**Prerequisites:**
- You have a valid API key from the backend
- To get one:
  ```bash
  # Use the backend API to register and create a site
  # Or use existing test API key
  ```

**Steps:**

1. **Go to Settings → MaplePress**

2. **Verify default API URL**
   - **Expected:** API URL field shows `http://localhost:8000`

3. **Enter a valid API key**
   - Paste your API key in the "API Key" field
   - **Optional:** Check "Enable MaplePress"
   - Click "Save Settings & Verify Connection"

4. **Verify Success Response**
   - **Expected:** Green success message: "✓ API connection verified successfully!"
   - **Expected:** Welcome banner disappears
   - **Expected:** New section appears: "✓ Connected to MaplePress"
   - **Expected:** Site details table shows:
     - Site ID (UUID)
     - Tenant ID (UUID)
     - Domain (your site domain)
     - Plan (e.g., "Free")
     - Status (● Active or ● Inactive)
   - **Expected:** "→ Open MaplePress Dashboard" button appears

5. **Verify Admin Notice Removed**
   - Navigate to Dashboard or Posts
   - **Expected:** Yellow warning banner is GONE

### Scenario 3: Invalid API Key (Error Path)

**Steps:**

1. **Go to Settings → MaplePress**

2. **Enter an invalid API key**
   - Enter: `invalid_key_12345`
   - Click "Save Settings & Verify Connection"

3. **Verify Error Response**
   - **Expected:** Red error message appears
   - **Expected:** Message says "API Connection Error: [error details]"
   - **Expected:** Site details table does NOT appear
   - **Expected:** Plugin status remains "needs setup"

4. **Verify Admin Notice Persists**
   - Navigate to Dashboard
   - **Expected:** Yellow warning banner STILL shows

### Scenario 4: Empty API Key

**Steps:**

1. **Go to Settings → MaplePress**

2. **Leave API key field empty**
   - Click "Save Settings & Verify Connection"

3. **Verify Behavior**
   - **Expected:** No error message (just saves empty)
   - **Expected:** Welcome banner still shows
   - **Expected:** Admin notice persists on other pages

### Scenario 5: API Key Update/Change

**Steps:**

1. **Start with a valid, connected API key**
   - Verify you see "✓ Connected to MaplePress"

2. **Change to a different valid API key**
   - Enter new API key
   - Click "Save Settings & Verify Connection"

3. **Verify Update**
   - **Expected:** Success message appears
   - **Expected:** Site details update to reflect new site

4. **Change to invalid key**
   - Enter invalid key
   - Click save

5. **Verify Validation**
   - **Expected:** Error message appears
   - **Expected:** Connection status changes back to "needs setup"
   - **Expected:** Admin notice returns

## Testing Checklist

- [ ] Plugin activation redirects to settings page
- [ ] Welcome banner shows on first visit
- [ ] "Sign Up" button links to https://getmaplepress.com/register (opens in new tab)
- [ ] "Login" button links to https://getmaplepress.com/login (opens in new tab)
- [ ] Admin notice appears on all pages when not configured
- [ ] Admin notice does NOT appear on settings page itself
- [ ] Admin notice is dismissible
- [ ] Valid API key shows success message
- [ ] Valid API key populates site details correctly
- [ ] Invalid API key shows clear error message
- [ ] Site details table shows after successful connection
- [ ] Site details include: site_id, tenant_id, domain, plan_tier
- [ ] Status indicator shows correct state (Active/Inactive)
- [ ] "Open MaplePress Dashboard" button appears when connected
- [ ] Dashboard button links to https://getmaplepress.com/dashboard (opens in new tab)
- [ ] Admin notice disappears after successful configuration
- [ ] Enable checkbox works correctly
- [ ] Settings persist after save
- [ ] API URL can be changed (for dev vs production)

## Manual API Key Testing

If you need to test with a real API key, follow the backend setup guide:

**See: `cloud/maplepress-backend/GETTING-STARTED.md` → "Create Test Data" section**

Quick summary:
1. Register a user with `POST /api/v1/register`
2. Create a site with `POST /api/v1/sites`
3. Save the `api_key` from the site creation response

For detailed curl examples and full instructions, see the backend GETTING-STARTED.md file.

## Expected Settings Structure

After successful configuration, WordPress options should contain:

```php
array(
  'api_url'      => 'http://localhost:8000',
  'api_key'      => 'live_sk_...',
  'site_id'      => 'abc-123-def',
  'tenant_id'    => 'xyz-456-uvw',
  'domain'       => 'localhost',
  'plan_tier'    => 'free',
  'is_verified'  => true,
  'enabled'      => true,
  'needs_setup'  => false,
)
```

## Troubleshooting

### Plugin doesn't redirect after activation
- Make sure you're not activating multiple plugins at once
- Try deactivating and reactivating
- Check if transient was set: `get_transient('maplepress_activation_redirect')`

### API connection fails
- Verify backend is running: `curl http://localhost:8000/health`
- Check API URL in settings matches backend URL
- Verify API key is correct and not expired
- Check WordPress debug logs: `docker exec -it mapleopentech-wordpress-dev tail -f /var/www/html/wp-content/debug.log`
- See backend troubleshooting: `cloud/maplepress-backend/GETTING-STARTED.md`

### Admin notice doesn't disappear
- Verify `needs_setup` is set to `false` in settings
- Clear WordPress transients/cache
- Deactivate and reactivate plugin

### Site details don't show
- Verify API response includes all fields (site_id, tenant_id, domain, plan_tier)
- Check backend `/api/v1/plugin/status` endpoint response
- Enable WordPress debug mode and check for PHP errors

## Success Criteria

✅ User can activate plugin and see setup instructions
✅ User can click external links to sign up/login
✅ User can enter API key and validate it
✅ Valid API key shows success and site details
✅ Invalid API key shows clear error
✅ Admin notices guide user through setup
✅ Connected state shows all site information
✅ Plugin can be enabled/disabled after connection

## Next Steps After Testing

Once basic authentication flow is verified:
1. Test with production backend URL
2. Implement content indexing features
3. Add search widget functionality
4. Build web dashboard for account/site management
