- Add comprehensive test data generation scripts for certificate testing - Create scripts to verify certificate data and attendee filtering - Add detailed findings and documentation on test data - Include certificate tests for various filter combinations - Fix issues with attendee filtering implementation in template - Add validation for certificate template file syntax - Document test data structure and verification results
186 lines
No EOL
6.2 KiB
PHP
186 lines
No EOL
6.2 KiB
PHP
<?php
|
|
/**
|
|
* Verify Certificate Test Data
|
|
*
|
|
* This script verifies that the certificate test data was created correctly
|
|
* by querying the database directly.
|
|
*/
|
|
|
|
// Load WordPress
|
|
require_once('wp-load.php');
|
|
|
|
echo "===== VERIFYING CERTIFICATE TEST DATA =====\n\n";
|
|
|
|
// Check for certificate manager
|
|
if (!class_exists('HVAC_Certificate_Manager')) {
|
|
die("Certificate Manager class not found. Please ensure the plugin is active.\n");
|
|
}
|
|
|
|
// Initialize certificate manager
|
|
$certificate_manager = HVAC_Certificate_Manager::instance();
|
|
|
|
// Get overall certificate statistics
|
|
$stats = $certificate_manager->get_certificate_stats();
|
|
|
|
echo "Certificate Database Statistics:\n";
|
|
echo "--------------------------------\n";
|
|
echo "Total certificates: {$stats['total_certificates']}\n";
|
|
echo "Total events with certificates: {$stats['total_events']}\n";
|
|
echo "Total trainees with certificates: {$stats['total_trainees']}\n";
|
|
echo "Total revoked certificates: {$stats['total_revoked']}\n";
|
|
echo "Total emailed certificates: {$stats['total_emailed']}\n";
|
|
echo "Average certificates per attendee: {$stats['avg_per_attendee']}\n\n";
|
|
|
|
// Verify our specific test events
|
|
$test_events = [
|
|
'HVAC System Design Fundamentals',
|
|
'Advanced Refrigeration Technology',
|
|
'Building Automation Systems Workshop'
|
|
];
|
|
|
|
echo "Verifying Test Events:\n";
|
|
echo "---------------------\n";
|
|
|
|
global $wpdb;
|
|
|
|
// Verify each test event
|
|
foreach ($test_events as $event_title) {
|
|
// Get the event by title
|
|
$event = get_page_by_title($event_title, OBJECT, 'tribe_events');
|
|
|
|
if (!$event) {
|
|
echo "❌ Event '{$event_title}' not found in database\n";
|
|
continue;
|
|
}
|
|
|
|
$event_id = $event->ID;
|
|
echo "✅ Found event '{$event_title}' (ID: {$event_id})\n";
|
|
|
|
// Get attendees for this event
|
|
$attendees = get_posts([
|
|
'post_type' => 'tribe_tpp_attendees',
|
|
'meta_query' => [
|
|
[
|
|
'key' => '_tribe_tpp_event',
|
|
'value' => $event_id,
|
|
]
|
|
],
|
|
'posts_per_page' => -1
|
|
]);
|
|
|
|
$total_attendees = count($attendees);
|
|
echo " - Total attendees: {$total_attendees}\n";
|
|
|
|
// Count checked-in attendees
|
|
$checked_in = 0;
|
|
foreach ($attendees as $attendee) {
|
|
$checkin_status = get_post_meta($attendee->ID, '_tribe_tpp_checkin', true);
|
|
if (!empty($checkin_status)) {
|
|
$checked_in++;
|
|
}
|
|
}
|
|
echo " - Checked-in attendees: {$checked_in}\n";
|
|
|
|
// Check certificates for this event
|
|
$certificates = $certificate_manager->get_certificates_by_event($event_id, true);
|
|
$cert_count = count($certificates);
|
|
echo " - Certificates generated: {$cert_count}\n";
|
|
|
|
// Count revoked and emailed
|
|
$revoked = 0;
|
|
$emailed = 0;
|
|
foreach ($certificates as $cert) {
|
|
if ($cert->revoked) {
|
|
$revoked++;
|
|
}
|
|
if ($cert->email_sent) {
|
|
$emailed++;
|
|
}
|
|
}
|
|
echo " - Revoked certificates: {$revoked}\n";
|
|
echo " - Emailed certificates: {$emailed}\n";
|
|
|
|
// Verify Ben Tester attendee and certificate
|
|
$ben_attendee = null;
|
|
foreach ($attendees as $attendee) {
|
|
$name = get_post_meta($attendee->ID, '_tribe_tickets_full_name', true);
|
|
if ($name === 'Ben Tester') {
|
|
$ben_attendee = $attendee;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($ben_attendee) {
|
|
echo " - ✅ Found 'Ben Tester' attendee (ID: {$ben_attendee->ID})\n";
|
|
|
|
// Check if Ben has a certificate
|
|
$ben_cert = $certificate_manager->get_certificate_by_attendee($event_id, $ben_attendee->ID);
|
|
if ($ben_cert) {
|
|
echo " - ✅ 'Ben Tester' has a certificate (ID: {$ben_cert->certificate_id})\n";
|
|
echo " - Certificate #: {$ben_cert->certificate_number}\n";
|
|
echo " - Generated on: {$ben_cert->date_generated}\n";
|
|
echo " - Revoked: " . ($ben_cert->revoked ? 'Yes' : 'No') . "\n";
|
|
echo " - Emailed: " . ($ben_cert->email_sent ? 'Yes' : 'No') . "\n";
|
|
} else {
|
|
echo " - ❌ 'Ben Tester' does not have a certificate\n";
|
|
}
|
|
} else {
|
|
echo " - ❌ 'Ben Tester' attendee not found for this event\n";
|
|
}
|
|
|
|
echo "\n";
|
|
}
|
|
|
|
// Verify attendee search functionality
|
|
echo "Verifying Attendee Search:\n";
|
|
echo "------------------------\n";
|
|
|
|
// Test searching by name
|
|
$sql = $wpdb->prepare(
|
|
"SELECT c.certificate_id
|
|
FROM {$wpdb->prefix}hvac_certificates c
|
|
JOIN {$wpdb->postmeta} pm ON c.attendee_id = pm.post_id
|
|
WHERE pm.meta_key = '_tribe_tickets_full_name' AND pm.meta_value LIKE %s",
|
|
'%Ben%'
|
|
);
|
|
|
|
$ben_cert_ids = $wpdb->get_col($sql);
|
|
echo "Search for 'Ben' in attendee names: Found " . count($ben_cert_ids) . " certificates\n";
|
|
|
|
// Test searching by email
|
|
$sql = $wpdb->prepare(
|
|
"SELECT c.certificate_id
|
|
FROM {$wpdb->prefix}hvac_certificates c
|
|
JOIN {$wpdb->postmeta} pm ON c.attendee_id = pm.post_id
|
|
WHERE pm.meta_key = '_tribe_tickets_email' AND pm.meta_value LIKE %s",
|
|
'%@tealmaker.com%'
|
|
);
|
|
|
|
$email_cert_ids = $wpdb->get_col($sql);
|
|
echo "Search for '@tealmaker.com' in attendee emails: Found " . count($email_cert_ids) . " certificates\n\n";
|
|
|
|
// Verify pagination would work by checking certificate count
|
|
$per_page = 20; // Default per page in template
|
|
$pages = ceil($stats['total_certificates'] / $per_page);
|
|
|
|
echo "Pagination Check:\n";
|
|
echo "----------------\n";
|
|
echo "With {$stats['total_certificates']} total certificates and {$per_page} per page,\n";
|
|
echo "the certificate reports page would have {$pages} pages\n\n";
|
|
|
|
echo "===== CERTIFICATE TEST DATA VERIFICATION COMPLETE =====\n";
|
|
|
|
if ($stats['total_certificates'] >= 47 &&
|
|
$stats['total_events'] >= 3 &&
|
|
$stats['total_trainees'] >= 47 &&
|
|
count($ben_cert_ids) >= 1 &&
|
|
count($email_cert_ids) >= 1 &&
|
|
$pages >= 1) {
|
|
echo "\n✅ TEST DATA VERIFICATION PASSED\n";
|
|
echo "The certificate test data appears to be correctly created and accessible.\n";
|
|
echo "You can now manually test the certificate reports page at:\n";
|
|
echo home_url('/certificate-reports/') . "\n";
|
|
} else {
|
|
echo "\n❌ TEST DATA VERIFICATION FAILED\n";
|
|
echo "Some of the expected test data could not be verified. Review the results above.\n";
|
|
} |