- 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
		
			
				
	
	
		
			202 lines
		
	
	
		
			No EOL
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			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/" |