upskill-event-manager/bin/create-comprehensive-test-data.sh
Ben Reed 3e23a0884e feat: Add comprehensive data seeding scripts for testing infrastructure
- Add essential data seeding scripts to version control
- Update .gitignore to whitelist bin/ directory for key testing scripts
- Include comprehensive test data creation for trainers, events, attendees, and certificates
- Scripts use environment variables for credentials (no hardcoded secrets)
- Supports both regular trainers and master trainers with proper roles
- Includes debugging and data enhancement utilities

Scripts included:
- create-comprehensive-test-data.sh: Full staging data setup with users/events/certificates
- create-staging-test-data.sh: Staging environment test data creation
- create-complete-test-data.sh: Complete test data with attendees and check-ins
- create-test-attendees.sh: Attendee and ticket order generation
- enhance-test-data-revenue.sh: Revenue data enhancement for testing
- fix-and-create-test-data.sh: Data fixing and creation combined
- debug-attendee-data.sh: Attendee data debugging utilities
2025-08-11 15:44:27 -03:00

202 lines
No EOL
7.6 KiB
Bash
Executable file

#!/bin/bash
# Comprehensive Test Data Creation Script
# Creates users, events, attendees, and certificates for staging environment
# Includes both regular trainers and master trainers
source .env
echo "=== Creating Comprehensive Test Data on Staging Server ==="
echo "Target: $UPSKILL_STAGING_IP"
echo "==============================="
# Upload and execute comprehensive PHP script
sshpass -p "$UPSKILL_STAGING_PASS" scp -o StrictHostKeyChecking=no /dev/stdin $UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP:tmp/comprehensive-test-data.php << 'PHPEOF'
<?php
require_once('wp-load.php');
echo "=== Creating comprehensive test data ===\n";
// Create or update test_trainer user
$test_trainer = get_user_by('login', 'test_trainer');
if (!$test_trainer) {
echo "Creating test_trainer user...\n";
$user_id = wp_create_user('test_trainer', 'Test123!', 'test@example.com');
if (!is_wp_error($user_id)) {
$user = new WP_User($user_id);
$user->set_role('hvac_trainer');
update_user_meta($user_id, 'first_name', 'Test');
update_user_meta($user_id, 'last_name', 'Trainer');
$test_trainer = get_user_by('ID', $user_id);
echo "Created test_trainer user (ID: {$user_id})\n";
}
} else {
echo "Found existing test_trainer user (ID: {$test_trainer->ID})\n";
}
// Create or update Joe Medosch as master trainer
$joe_user = get_user_by('email', 'JoeMedosch@gmail.com');
if (!$joe_user) {
echo "Creating JoeMedosch@gmail.com master trainer...\n";
$joe_id = wp_create_user('joemedosch', 'JoeTrainer2025@', 'JoeMedosch@gmail.com');
if (!is_wp_error($joe_id)) {
$user = new WP_User($joe_id);
$user->set_role('hvac_master_trainer');
update_user_meta($joe_id, 'first_name', 'Joe');
update_user_meta($joe_id, 'last_name', 'Medosch');
update_user_meta($joe_id, 'display_name', 'Joe Medosch');
$joe_user = get_user_by('ID', $joe_id);
echo "Created Joe Medosch master trainer (ID: {$joe_id})\n";
}
} else {
echo "Found existing Joe Medosch user (ID: {$joe_user->ID})\n";
// Ensure they have master trainer role
$user = new WP_User($joe_user->ID);
$user->set_role('hvac_master_trainer');
echo "Updated Joe Medosch to master trainer role\n";
}
// Assign roles to joe@measurequick.com if user exists
$joe_mq_user = get_user_by('email', 'joe@measurequick.com');
if ($joe_mq_user) {
echo "Found joe@measurequick.com user (ID: {$joe_mq_user->ID})\n";
echo "Assigning trainer and master trainer roles...\n";
// Add both HVAC roles (keeping existing roles)
$user = new WP_User($joe_mq_user->ID);
$user->add_role('hvac_trainer');
$user->add_role('hvac_master_trainer');
echo "Added hvac_trainer and hvac_master_trainer roles to joe@measurequick.com\n";
} else {
echo "joe@measurequick.com user not found (may not exist in staging)\n";
}
if (!$test_trainer) {
die("Failed to create/find test_trainer user\n");
}
$trainer_id = $test_trainer->ID;
echo "Using trainer ID: {$trainer_id}\n";
// Create 3 test events
$events = [
[
'title' => 'HVAC System Diagnostics',
'description' => 'Advanced diagnostic techniques for HVAC systems',
'start_date' => date('Y-m-d 09:00:00', strtotime('+1 week')),
'end_date' => date('Y-m-d 17:00:00', strtotime('+1 week')),
'price' => 299
],
[
'title' => 'Commercial Refrigeration',
'description' => 'Commercial refrigeration systems training',
'start_date' => date('Y-m-d 09:00:00', strtotime('+2 weeks')),
'end_date' => date('Y-m-d 17:00:00', strtotime('+2 weeks')),
'price' => 349
],
[
'title' => 'Energy Efficient HVAC',
'description' => 'Energy efficiency in HVAC design',
'start_date' => date('Y-m-d 09:00:00', strtotime('+3 weeks')),
'end_date' => date('Y-m-d 17:00:00', strtotime('+3 weeks')),
'price' => 399
]
];
$events_created = 0;
foreach ($events as $event_data) {
echo "Creating event: {$event_data['title']}\n";
$event_args = [
'post_title' => $event_data['title'],
'post_content' => $event_data['description'],
'post_status' => 'publish',
'post_type' => 'tribe_events',
'post_author' => $trainer_id,
'meta_input' => [
'_EventStartDate' => $event_data['start_date'],
'_EventEndDate' => $event_data['end_date'],
'_EventCost' => $event_data['price']
]
];
$event_id = wp_insert_post($event_args);
if (!is_wp_error($event_id)) {
echo "Created event ID: {$event_id}\n";
// Create ticket
$ticket_args = [
'post_title' => 'General Admission',
'post_status' => 'publish',
'post_type' => 'tribe_tpp_tickets',
'post_author' => $trainer_id
];
$ticket_id = wp_insert_post($ticket_args);
if (!is_wp_error($ticket_id)) {
update_post_meta($ticket_id, '_tribe_tpp_for_event', $event_id);
update_post_meta($ticket_id, '_price', $event_data['price']);
update_post_meta($ticket_id, '_capacity', 30);
update_post_meta($ticket_id, '_stock', 25);
// Create 5 attendees
for ($i = 1; $i <= 5; $i++) {
$attendee_args = [
'post_title' => "Test Attendee {$i}",
'post_status' => 'publish',
'post_type' => 'tribe_tpp_attendees',
'post_author' => $trainer_id
];
$attendee_id = wp_insert_post($attendee_args);
if (!is_wp_error($attendee_id)) {
update_post_meta($attendee_id, '_tribe_tpp_event', $event_id);
update_post_meta($attendee_id, '_tribe_tpp_product', $ticket_id);
update_post_meta($attendee_id, '_tribe_tickets_full_name', "Test Attendee {$i}");
update_post_meta($attendee_id, '_tribe_tickets_email', "test{$i}@example.com");
update_post_meta($attendee_id, '_tribe_tpp_order', "ORDER-{$event_id}-{$i}");
// Check in first 3 attendees
if ($i <= 3) {
update_post_meta($attendee_id, '_tribe_tpp_checkin', 1);
update_post_meta($attendee_id, 'check_in', 1);
}
}
}
echo "Created 5 attendees (3 checked in)\n";
}
$events_created++;
}
}
echo "\n=== Test Data Creation Complete ===\n";
echo "Created users:\n";
echo "- test_trainer (hvac_trainer role)\n";
echo "- JoeMedosch@gmail.com (hvac_master_trainer role)\n";
echo "Created {$events_created} events with attendees\n";
echo "\nLogin credentials:\n";
echo "test_trainer: Test123!\n";
echo "JoeMedosch@gmail.com: JoeTrainer2025@\n";
?>
PHPEOF
# Execute the script on the server
echo "Executing test data creation..."
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no $UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP "cd $UPSKILL_STAGING_PATH && php ../tmp/comprehensive-test-data.php && rm ../tmp/comprehensive-test-data.php"
echo ""
echo "✅ Comprehensive test data creation completed!"
echo ""
echo "Users created:"
echo "- test_trainer (Trainer): Test123!"
echo "- JoeMedosch@gmail.com (Master Trainer): JoeTrainer2025@"
echo ""
echo "Test URLs:"
echo "- Login: https://upskill-staging.measurequick.com/training-login/"
echo "- Trainer Dashboard: https://upskill-staging.measurequick.com/trainer/dashboard/"
echo "- Master Dashboard: https://upskill-staging.measurequick.com/master-trainer/dashboard/"