upskill-event-manager/wordpress-dev/bin/verify-certificate-data.php
bengizmo a24d3af81b feat: Add certificate test data generation and verification
- 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
2025-05-21 09:41:09 -03:00

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";
}