feat: Add test user creation and plugin verification scripts
This commit is contained in:
		
							parent
							
								
									9b2b574518
								
							
						
					
					
						commit
						7ac4d4b853
					
				
					 3 changed files with 325 additions and 0 deletions
				
			
		
							
								
								
									
										122
									
								
								wordpress-dev/bin/create-test-events-admin.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										122
									
								
								wordpress-dev/bin/create-test-events-admin.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,122 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| # Load environment variables | ||||
| if [ -f "./.env" ]; then | ||||
|     source ./.env | ||||
| else | ||||
|     echo "Error: .env file not found!" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Configuration | ||||
| SSH_USER="${UPSKILL_STAGING_SSH_USER}" | ||||
| SSH_HOST="${UPSKILL_STAGING_IP}" | ||||
| SSH_PASS="${UPSKILL_STAGING_PASS}" | ||||
| SITE_PATH="${UPSKILL_STAGING_PATH:-/home/974670.cloudwaysapps.com/uberrxmprk/public_html}" | ||||
| 
 | ||||
| # Check if required variables are set | ||||
| if [ -z "$SSH_USER" ] || [ -z "$SSH_HOST" ] || [ -z "$SSH_PASS" ]; then | ||||
|     echo "Error: Required environment variables not set. Please check your .env file." | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Create a test event for the test_trainer user | ||||
| echo "=== Creating test event for test_trainer ===" | ||||
| sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp post create --post_type=tribe_events --post_title='HVAC Training Workshop' --post_content='This is a test event for HVAC training.' --post_status=publish --post_author=18 --meta_input='{\"_EventStartDate\":\"$(date -v+1d "+%Y-%m-%d 10:00:00")\",\"_EventEndDate\":\"$(date -v+1d "+%Y-%m-%d 16:00:00")\",\"_EventVenueID\":\"auto\",\"_EventURL\":\"https://upskill-staging.measurequick.com\",\"_EventCurrencySymbol\":\"$\",\"_EventCurrencyPosition\":\"prefix\",\"_EventCost\":\"99.99\",\"_EventTimezone\":\"America/New_York\"}'" | ||||
| 
 | ||||
| # Create another event with a different date | ||||
| echo "=== Creating second test event for test_trainer ===" | ||||
| sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp post create --post_type=tribe_events --post_title='Advanced HVAC Certification' --post_content='An advanced certification course for HVAC professionals.' --post_status=publish --post_author=18 --meta_input='{\"_EventStartDate\":\"$(date -v+7d "+%Y-%m-%d 09:00:00")\",\"_EventEndDate\":\"$(date -v+8d "+%Y-%m-%d 17:00:00")\",\"_EventVenueID\":\"auto\",\"_EventURL\":\"https://upskill-staging.measurequick.com\",\"_EventCurrencySymbol\":\"$\",\"_EventCurrencyPosition\":\"prefix\",\"_EventCost\":\"299.99\",\"_EventTimezone\":\"America/New_York\"}'" | ||||
| 
 | ||||
| # Create an event for admin_trainer | ||||
| echo "=== Creating test event for admin_trainer ===" | ||||
| sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp post create --post_type=tribe_events --post_title='HVAC Business Management' --post_content='Learn how to manage your HVAC business effectively.' --post_status=publish --post_author=19 --meta_input='{\"_EventStartDate\":\"$(date -v+14d "+%Y-%m-%d 13:00:00")\",\"_EventEndDate\":\"$(date -v+14d "+%Y-%m-%d 17:00:00")\",\"_EventVenueID\":\"auto\",\"_EventURL\":\"https://upskill-staging.measurequick.com\",\"_EventCurrencySymbol\":\"$\",\"_EventCurrencyPosition\":\"prefix\",\"_EventCost\":\"149.99\",\"_EventTimezone\":\"America/New_York\"}'" | ||||
| 
 | ||||
| # Create test attendees | ||||
| echo "=== Creating test attendees for the first event ===" | ||||
| # We would normally use The Events Calendar's ticket system for this | ||||
| # For now, we'll create a custom script to simulate attendees | ||||
| 
 | ||||
| cat > /tmp/create_attendees.php << 'EOL' | ||||
| <?php | ||||
| // Get the WordPress environment | ||||
| require_once('wp-load.php'); | ||||
| 
 | ||||
| // Find the first event for test_trainer (ID 18) | ||||
| $events = get_posts(array( | ||||
|     'post_type' => 'tribe_events', | ||||
|     'author' => 18, | ||||
|     'posts_per_page' => 1, | ||||
|     'orderby' => 'date', | ||||
|     'order' => 'DESC' | ||||
| )); | ||||
| 
 | ||||
| if (empty($events)) { | ||||
|     echo "No events found for test_trainer\n"; | ||||
|     exit(1); | ||||
| } | ||||
| 
 | ||||
| $event_id = $events[0]->ID; | ||||
| echo "Creating attendees for event: " . $events[0]->post_title . " (ID: $event_id)\n"; | ||||
| 
 | ||||
| // Test attendee data | ||||
| $attendees = array( | ||||
|     array( | ||||
|         'name' => 'John Smith', | ||||
|         'email' => 'john.smith@example.com', | ||||
|         'phone' => '555-123-4567', | ||||
|         'paid' => 99.99, | ||||
|         'status' => 'checked-in' | ||||
|     ), | ||||
|     array( | ||||
|         'name' => 'Jane Doe', | ||||
|         'email' => 'jane.doe@example.com', | ||||
|         'phone' => '555-987-6543', | ||||
|         'paid' => 99.99, | ||||
|         'status' => 'checked-in' | ||||
|     ), | ||||
|     array( | ||||
|         'name' => 'Bob Johnson', | ||||
|         'email' => 'bob.johnson@example.com', | ||||
|         'phone' => '555-456-7890', | ||||
|         'paid' => 99.99, | ||||
|         'status' => 'not-checked-in' | ||||
|     ) | ||||
| ); | ||||
| 
 | ||||
| // Create attendees (this is a simplified example - actual implementation depends on The Events Calendar) | ||||
| foreach ($attendees as $attendee_data) { | ||||
|     // Check if we need to integrate with a specific ticket system | ||||
|     // For now, we'll just create custom post meta to simulate attendees | ||||
|      | ||||
|     // Create a unique ID for this attendee | ||||
|     $attendee_id = 'test_' . md5($attendee_data['email'] . time()); | ||||
|      | ||||
|     // Add attendee to event (simplified approach) | ||||
|     add_post_meta($event_id, '_tribe_attendee_' . $attendee_id, array( | ||||
|         'name' => $attendee_data['name'], | ||||
|         'email' => $attendee_data['email'], | ||||
|         'phone' => $attendee_data['phone'], | ||||
|         'paid' => $attendee_data['paid'], | ||||
|         'status' => $attendee_data['status'], | ||||
|         'created' => current_time('mysql') | ||||
|     )); | ||||
|      | ||||
|     echo "Created attendee: " . $attendee_data['name'] . "\n"; | ||||
| } | ||||
| 
 | ||||
| // Update attendee count in event meta | ||||
| $attendee_count = count($attendees); | ||||
| update_post_meta($event_id, '_tribe_attendee_count', $attendee_count); | ||||
| echo "Updated attendee count to $attendee_count\n"; | ||||
| 
 | ||||
| echo "Done creating test attendees\n"; | ||||
| EOL | ||||
| 
 | ||||
| # Upload and run the PHP script | ||||
| sshpass -p "$SSH_PASS" scp -o StrictHostKeyChecking=no /tmp/create_attendees.php "$SSH_USER@$SSH_HOST:$SITE_PATH/create_attendees.php" | ||||
| sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && php create_attendees.php" | ||||
| sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && rm create_attendees.php" | ||||
| 
 | ||||
| echo "=== Test events and attendees created successfully ===" | ||||
| echo "You can view these events on the HVAC dashboard or in the WordPress admin" | ||||
							
								
								
									
										90
									
								
								wordpress-dev/bin/create-test-users.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										90
									
								
								wordpress-dev/bin/create-test-users.sh
									
									
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,90 @@ | |||
| #!/bin/bash | ||||
| 
 | ||||
| # Load environment variables | ||||
| if [ -f "./.env" ]; then | ||||
|     source ./.env | ||||
| else | ||||
|     echo "Error: .env file not found!" | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Configuration | ||||
| SSH_USER="${UPSKILL_STAGING_SSH_USER}" | ||||
| SSH_HOST="${UPSKILL_STAGING_IP}" | ||||
| SSH_PASS="${UPSKILL_STAGING_PASS}" | ||||
| SITE_PATH="${UPSKILL_STAGING_PATH:-/home/974670.cloudwaysapps.com/uberrxmprk/public_html}" | ||||
| 
 | ||||
| # Check if required variables are set | ||||
| if [ -z "$SSH_USER" ] || [ -z "$SSH_HOST" ] || [ -z "$SSH_PASS" ]; then | ||||
|     echo "Error: Required environment variables not set. Please check your .env file." | ||||
|     exit 1 | ||||
| fi | ||||
| 
 | ||||
| # Function to create a user with the trainer role | ||||
| create_test_user() { | ||||
|     local username=$1 | ||||
|     local email=$2 | ||||
|     local password=$3 | ||||
|     local first_name=$4 | ||||
|     local last_name=$5 | ||||
|     local role=$6 | ||||
|     local business_name=$7 | ||||
|     local business_phone=$8 | ||||
|     local business_email=$9 | ||||
| 
 | ||||
|     echo "Creating user: $username ($email) with role: $role" | ||||
|      | ||||
|     # Check if user already exists | ||||
|     USER_EXISTS=$(sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user get $username --field=ID 2>/dev/null || echo ''") | ||||
|      | ||||
|     if [ -n "$USER_EXISTS" ]; then | ||||
|         echo "User $username already exists with ID: $USER_EXISTS" | ||||
|          | ||||
|         # Update user if exists | ||||
|         sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user update $USER_EXISTS --user_pass='$password' --first_name='$first_name' --last_name='$last_name' --role='$role'" | ||||
|         echo "Updated user password, name, and role" | ||||
|     else | ||||
|         # Create user | ||||
|         USER_ID=$(sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user create $username $email --user_pass='$password' --first_name='$first_name' --last_name='$last_name' --role='$role' --porcelain") | ||||
|          | ||||
|         if [ -z "$USER_ID" ]; then | ||||
|             echo "Error: Failed to create user $username" | ||||
|             return 1 | ||||
|         fi | ||||
|          | ||||
|         echo "Created user $username with ID: $USER_ID" | ||||
|     fi | ||||
|      | ||||
|     # Add user meta for business details | ||||
|     if [ -n "$business_name" ]; then | ||||
|         sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user meta update $username business_name '$business_name'" | ||||
|     fi | ||||
|      | ||||
|     if [ -n "$business_phone" ]; then | ||||
|         sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user meta update $username business_phone '$business_phone'" | ||||
|     fi | ||||
|      | ||||
|     if [ -n "$business_email" ]; then | ||||
|         sshpass -p "$SSH_PASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_HOST" "cd $SITE_PATH && wp user meta update $username business_email '$business_email'" | ||||
|     fi | ||||
|      | ||||
|     echo "Updated business details for $username" | ||||
|     return 0 | ||||
| } | ||||
| 
 | ||||
| # Create test_trainer user | ||||
| echo "=== Creating test trainer user ===" | ||||
| create_test_user "test_trainer" "test_trainer@example.com" "Test123!" "Test" "Trainer" "hvac_trainer" "Test HVAC Training" "555-0123" "business@testtraining.com" | ||||
| echo "" | ||||
| 
 | ||||
| # Create admin_trainer user | ||||
| echo "=== Creating admin trainer user ===" | ||||
| create_test_user "admin_trainer" "admin_trainer@example.com" "Admin123!" "Admin" "Trainer" "administrator" "Admin HVAC Training" "555-0124" "admin@testtraining.com" | ||||
| echo "" | ||||
| 
 | ||||
| # Create pending_trainer user | ||||
| echo "=== Creating pending trainer user ===" | ||||
| create_test_user "pending_trainer" "pending_trainer@example.com" "Pending123!" "Pending" "Trainer" "subscriber" "Pending HVAC Training" "555-0125" "pending@testtraining.com" | ||||
| echo "" | ||||
| 
 | ||||
| echo "Test users created successfully!" | ||||
							
								
								
									
										113
									
								
								wordpress-dev/tests/e2e/verify-plugin-status.test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								wordpress-dev/tests/e2e/verify-plugin-status.test.ts
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,113 @@ | |||
| import { test, expect } from '@playwright/test'; | ||||
| 
 | ||||
| test.describe('Plugin Status Verification', () => { | ||||
|   test('verify HVAC Community Events plugin status on staging', async ({ page }) => { | ||||
|     console.log('Starting plugin status verification...'); | ||||
| 
 | ||||
|     // First check if we can access the site
 | ||||
|     await page.goto('https://upskill-staging.measurequick.com/'); | ||||
|     await expect(page).toHaveTitle(/Upskill HVAC/); | ||||
|     console.log('✓ Site is accessible'); | ||||
| 
 | ||||
|     // Try to access WordPress admin
 | ||||
|     await page.goto('https://upskill-staging.measurequick.com/wp-admin/'); | ||||
|      | ||||
|     // Check if we're redirected to login
 | ||||
|     await page.waitForLoadState('networkidle'); | ||||
|     const url = page.url(); | ||||
|     console.log(`Current URL: ${url}`); | ||||
| 
 | ||||
|     if (url.includes('wp-login')) { | ||||
|       console.log('Need to login to access admin'); | ||||
|        | ||||
|       // Try to login with admin credentials if available
 | ||||
|       try { | ||||
|         await page.fill('#user_login', 'admin'); | ||||
|         await page.fill('#user_pass', 'admin'); // Common staging password
 | ||||
|         await page.click('#wp-submit'); | ||||
|         await page.waitForLoadState('networkidle'); | ||||
|          | ||||
|         // Check if login was successful
 | ||||
|         if (page.url().includes('wp-admin') && !page.url().includes('wp-login')) { | ||||
|           console.log('✓ Successfully logged into admin'); | ||||
|            | ||||
|           // Navigate to plugins page
 | ||||
|           await page.goto('https://upskill-staging.measurequick.com/wp-admin/plugins.php'); | ||||
|           await page.waitForLoadState('networkidle'); | ||||
|            | ||||
|           // Check for HVAC plugin
 | ||||
|           const hvacPlugin = page.locator('tr[data-slug="hvac-community-events"], tr:has-text("HVAC Community Events")'); | ||||
|           const pluginExists = await hvacPlugin.count() > 0; | ||||
|            | ||||
|           if (pluginExists) { | ||||
|             console.log('✓ HVAC Community Events plugin found in plugins list'); | ||||
|              | ||||
|             // Check if it's active
 | ||||
|             const isActive = await page.locator('tr[data-slug="hvac-community-events"] .plugin-title strong, tr:has-text("HVAC Community Events") .plugin-title strong').count() > 0; | ||||
|             console.log(`Plugin active status: ${isActive}`); | ||||
|              | ||||
|             // Get plugin details
 | ||||
|             const pluginRow = page.locator('tr[data-slug="hvac-community-events"], tr:has-text("HVAC Community Events")').first(); | ||||
|             const pluginText = await pluginRow.textContent(); | ||||
|             console.log(`Plugin details: ${pluginText?.substring(0, 200)}...`); | ||||
|           } else { | ||||
|             console.log('✗ HVAC Community Events plugin NOT found in plugins list'); | ||||
|              | ||||
|             // List all plugins to see what's installed
 | ||||
|             const allPlugins = await page.locator('#the-list tr .plugin-title strong').allTextContents(); | ||||
|             console.log('Installed plugins:', allPlugins); | ||||
|           } | ||||
|            | ||||
|           // Check if we can access HVAC menu items
 | ||||
|           const hvacMenu = page.locator('#adminmenu a:has-text("HVAC")'); | ||||
|           const menuExists = await hvacMenu.count() > 0; | ||||
|           console.log(`HVAC admin menu exists: ${menuExists}`); | ||||
|            | ||||
|         } else { | ||||
|           console.log('✗ Login failed or redirected'); | ||||
|         } | ||||
|       } catch (error) { | ||||
|         console.log('Login attempt failed:', error); | ||||
|       } | ||||
|     } | ||||
| 
 | ||||
|     // Check frontend for plugin indicators
 | ||||
|     await page.goto('https://upskill-staging.measurequick.com/'); | ||||
|     await page.waitForLoadState('networkidle'); | ||||
|      | ||||
|     // Look for HVAC-specific CSS classes, scripts, or content
 | ||||
|     const hvacIndicators = { | ||||
|       cssFiles: await page.locator('link[href*="hvac"]').count(), | ||||
|       jsFiles: await page.locator('script[src*="hvac"]').count(), | ||||
|       hvacClasses: await page.locator('[class*="hvac"]').count(), | ||||
|       communityPages: await page.locator('a[href*="community"]').count(), | ||||
|       trainerPages: await page.locator('a[href*="trainer"]').count() | ||||
|     }; | ||||
|      | ||||
|     console.log('Frontend HVAC indicators:', hvacIndicators); | ||||
|      | ||||
|     // Check if community registration page exists
 | ||||
|     try { | ||||
|       await page.goto('https://upskill-staging.measurequick.com/community-registration/'); | ||||
|       await page.waitForLoadState('networkidle'); | ||||
|       const pageTitle = await page.title(); | ||||
|       const pageExists = !pageTitle.includes('Page not found') && !pageTitle.includes('404'); | ||||
|       console.log(`Community registration page exists: ${pageExists}`); | ||||
|       console.log(`Page title: ${pageTitle}`); | ||||
|     } catch (error) { | ||||
|       console.log('Community registration page not accessible'); | ||||
|     } | ||||
|      | ||||
|     // Check if trainer dashboard exists
 | ||||
|     try { | ||||
|       await page.goto('https://upskill-staging.measurequick.com/trainer-dashboard/'); | ||||
|       await page.waitForLoadState('networkidle'); | ||||
|       const pageTitle = await page.title(); | ||||
|       const pageExists = !pageTitle.includes('Page not found') && !pageTitle.includes('404'); | ||||
|       console.log(`Trainer dashboard page exists: ${pageExists}`); | ||||
|       console.log(`Page title: ${pageTitle}`); | ||||
|     } catch (error) { | ||||
|       console.log('Trainer dashboard page not accessible'); | ||||
|     } | ||||
|   }); | ||||
| }); | ||||
		Loading…
	
		Reference in a new issue