# Email Attendees Feature - Manual Test Plan

This document outlines a manual testing plan for the Email Attendees functionality in the HVAC Community Events plugin.

## Prerequisites

- A WordPress site with The Events Calendar and Event Tickets plugins installed and activated
- The HVAC Community Events plugin installed and activated
- A user with the `hvac_trainer` role
- At least one event created by the trainer
- At least one attendee registered for the event

## Test Scenarios

### 1. Navigation and Access Control

| # | Test Case | Expected Result | Pass/Fail |
|---|-----------|-----------------|-----------|
| 1.1 | As a logged-in trainer, navigate to Event Summary page of your event | Event Summary page loads with event details and Email Attendees button is visible | |
| 1.2 | Click on Email Attendees button | Redirects to Email Attendees page with the same event ID | |
| 1.3 | Try to access Email Attendees page directly when logged out | Redirects to login page | |
| 1.4 | Try to access Email Attendees page for an event you don't own | Access denied message appears | |

### 2. UI Elements

| # | Test Case | Expected Result | Pass/Fail |
|---|-----------|-----------------|-----------|
| 2.1 | Load Email Attendees page for an event with attendees | Page shows event title, navigation buttons, email form, and list of attendees | |
| 2.2 | Verify form elements | Subject field, CC field, rich text editor, and recipient list are present | |
| 2.3 | Check navigation buttons | View Event Summary and Return to Dashboard buttons are functional | |
| 2.4 | Verify attendee list | List shows attendee names, emails, and ticket types | |
| 2.5 | Check for Select All functionality | Select All checkbox selects/deselects all attendees | |

### 3. Filtering

| # | Test Case | Expected Result | Pass/Fail |
|---|-----------|-----------------|-----------|
| 3.1 | With multiple ticket types, check if filter exists | Ticket type filter dropdown is visible with all ticket types | |
| 3.2 | Select a specific ticket type | Page reloads with only attendees of that ticket type | |
| 3.3 | Select "All Tickets" option | Page shows all attendees regardless of ticket type | |

### 4. Form Validation

| # | Test Case | Expected Result | Pass/Fail |
|---|-----------|-----------------|-----------|
| 4.1 | Submit form without subject | Error message indicates subject is required | |
| 4.2 | Submit form without message | Error message indicates message is required | |
| 4.3 | Submit form without selecting recipients | Error message indicates at least one recipient is required | |
| 4.4 | Enter invalid email in CC field | Error message indicates invalid email format | |

### 5. Email Sending

| # | Test Case | Expected Result | Pass/Fail |
|---|-----------|-----------------|-----------|
| 5.1 | Fill all required fields and submit | Success message indicates email was sent | |
| 5.2 | Check recipient receives email | Email is received with correct subject and content | |
| 5.3 | Send email with CC | CC recipient also receives the email | |
| 5.4 | Verify personalization | Email begins with attendee's name if available | |
| 5.5 | Check email subject | Subject contains event title and custom subject text | |

### 6. Edge Cases

| # | Test Case | Expected Result | Pass/Fail |
|---|-----------|-----------------|-----------|
| 6.1 | Access page for an event with no attendees | Message indicates no attendees available | |
| 6.2 | Try to email non-existent event | Redirects to dashboard with error message | |
| 6.3 | Test with a large number of attendees | List correctly paginates or scrolls, Select All works correctly | |
| 6.4 | Test with special characters in email fields | Special characters are properly escaped | |

## Test Results

**Tester:** ______________________

**Date:** ________________________

**Environment:** _________________

**Overall Result:** _______________

## Notes

- Record any bugs, issues, or unexpected behavior in this section
- Include browser and device information for any UI or display issues
- Document any performance concerns or usability issues

## Recommendations

- Add any recommendations for future improvements or feature enhancements here