- Add HVAC_Test_User_Factory class with: * User creation with specific roles * Multiple role support * Persona management system * Account cleanup integration - Create comprehensive test suite in HVAC_Test_User_Factory_Test.php - Update testing improvement plan documentation - Add implementation decisions to project memory bank - Restructure .gitignore with: * Whitelist approach for better file management * Explicit backup exclusions * Specific bin directory inclusions Part of the Account Management component from the testing framework improvement plan.
		
			
				
	
	
		
			162 lines
		
	
	
		
			No EOL
		
	
	
		
			6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			No EOL
		
	
	
		
			6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| use Yoast\WPTestUtils\WPIntegration\TestCase;
 | |
| 
 | |
| /**
 | |
|  * Class Test_Event_Summary_Integration
 | |
|  *
 | |
|  * Integration tests for Event Summary functionality, especially involving dependencies like Event Tickets.
 | |
|  */
 | |
| class Test_Event_Summary_Integration extends TestCase {
 | |
| 
 | |
|     /**
 | |
|      * Set up the test environment.
 | |
|      */
 | |
|     public function set_up(): void {
 | |
|         parent::set_up();
 | |
|         // Ensure the class under test is available
 | |
|         require_once dirname(__DIR__, 2) . '/wp-content/plugins/hvac-community-events/includes/community/class-event-summary-data.php';
 | |
| 
 | |
|         // Activate dependent plugins using WP-CLI for better hook triggering
 | |
|         // Note: This assumes WP-CLI is available in the container's PATH as 'wp'
 | |
|         // And that shell_exec is permitted. Check php.ini disable_functions if it fails.
 | |
|         $tec_slug = 'the-events-calendar';
 | |
|         $et_slug = 'event-tickets';
 | |
| 
 | |
|         // Check if plugins are already active to avoid errors/warnings
 | |
|         $tec_active = shell_exec( 'wp plugin is-active ' . escapeshellarg($tec_slug) . ' --allow-root' );
 | |
|         $et_active = shell_exec( 'wp plugin is-active ' . escapeshellarg($et_slug) . ' --allow-root' );
 | |
| 
 | |
|         if ( strpos( $tec_active, 'Success' ) === false ) {
 | |
|             shell_exec( 'wp plugin activate ' . escapeshellarg($tec_slug) . ' --allow-root' );
 | |
|         }
 | |
|          if ( strpos( $et_active, 'Success' ) === false ) {
 | |
|             shell_exec( 'wp plugin activate ' . escapeshellarg($et_slug) . ' --allow-root' );
 | |
|         }
 | |
| 
 | |
|         // Flush cache after activating plugins
 | |
|         wp_cache_flush();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Tear down the test environment.
 | |
|      */
 | |
|     public function tear_down(): void {
 | |
|         parent::tear_down();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test event details retrieval and display.
 | |
|      * @test
 | |
|      */
 | |
|     public function test_event_details_retrieval() {
 | |
|         // Create a test event
 | |
|         $event_id = $this->factory->post->create([
 | |
|             'post_type' => Tribe__Events__Main::POSTTYPE,
 | |
|             'post_title' => 'Test HVAC Training Event',
 | |
|             'post_status' => 'publish',
 | |
|             'meta_input' => [
 | |
|                 '_EventStartDate' => date('Y-m-d H:i:s', strtotime('+1 week')),
 | |
|                 '_EventEndDate' => date('Y-m-d H:i:s', strtotime('+1 week +2 hours')),
 | |
|                 '_EventVenue' => 'Test Venue',
 | |
|                 '_EventCost' => '199.99'
 | |
|             ]
 | |
|         ]);
 | |
| 
 | |
|         // Get event summary data
 | |
|         $summary = new HVAC_Event_Summary_Data($event_id);
 | |
|         $event_data = $summary->get_event_details();
 | |
| 
 | |
|         // Verify event details
 | |
|         $this->assertEquals('Test HVAC Training Event', $event_data['title']);
 | |
|         $this->assertEquals('Test Venue', $event_data['venue']);
 | |
|         $this->assertEquals('199.99', $event_data['cost']);
 | |
|         $this->assertArrayHasKey('start_date', $event_data);
 | |
|         $this->assertArrayHasKey('end_date', $event_data);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test transaction data handling with mocked Event Tickets data.
 | |
|      * @test
 | |
|      */
 | |
|     public function test_transaction_data_handling() {
 | |
|         // Create test event
 | |
|         $event_id = $this->factory->post->create([
 | |
|             'post_type' => Tribe__Events__Main::POSTTYPE,
 | |
|             'post_title' => 'Transaction Test Event'
 | |
|         ]);
 | |
| 
 | |
|         // Mock transaction data since we can't rely on Event Tickets in integration tests
 | |
|         add_filter('tribe_tickets_get_attendees', function($attendees, $post_id) use ($event_id) {
 | |
|             if ($post_id === $event_id) {
 | |
|                 return [
 | |
|                     [
 | |
|                         'order_id' => '123',
 | |
|                         'purchaser_name' => 'John Doe',
 | |
|                         'purchase_time' => date('Y-m-d H:i:s'),
 | |
|                         'ticket_name' => 'General Admission',
 | |
|                         'price' => 50.00
 | |
|                     ]
 | |
|                 ];
 | |
|             }
 | |
|             return $attendees;
 | |
|         }, 10, 2);
 | |
| 
 | |
|         // Get transaction summary
 | |
|         $summary = new HVAC_Event_Summary_Data($event_id);
 | |
|         $transactions = $summary->get_transaction_summary();
 | |
| 
 | |
|         // Verify transaction data
 | |
|         $this->assertIsArray($transactions);
 | |
|         $this->assertCount(1, $transactions);
 | |
|         $this->assertEquals('John Doe', $transactions[0]['purchaser_name']);
 | |
|         $this->assertEquals(50.00, $transactions[0]['price']);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test breadcrumb navigation integration.
 | |
|      * @test
 | |
|      */
 | |
|     public function test_breadcrumb_navigation() {
 | |
|         // Create test event
 | |
|         $event_id = $this->factory->post->create([
 | |
|             'post_type' => Tribe__Events__Main::POSTTYPE,
 | |
|             'post_title' => 'Breadcrumb Test Event'
 | |
|         ]);
 | |
| 
 | |
|         // Get breadcrumb data
 | |
|         $summary = new HVAC_Event_Summary_Data($event_id);
 | |
|         $breadcrumbs = $summary->get_breadcrumb_data();
 | |
| 
 | |
|         // Verify breadcrumb structure
 | |
|         $this->assertIsArray($breadcrumbs);
 | |
|         $this->assertArrayHasKey('home', $breadcrumbs);
 | |
|         $this->assertArrayHasKey('events', $breadcrumbs);
 | |
|         $this->assertArrayHasKey('current', $breadcrumbs);
 | |
|         $this->assertEquals('Breadcrumb Test Event', $breadcrumbs['current']['title']);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Test theme styling integration for event summary.
 | |
|      * @test
 | |
|      */
 | |
|     public function test_theme_styling_integration() {
 | |
|         // Create test event
 | |
|         $event_id = $this->factory->post->create([
 | |
|             'post_type' => Tribe__Events__Main::POSTTYPE,
 | |
|             'post_title' => 'Styling Test Event'
 | |
|         ]);
 | |
| 
 | |
|         // Get summary display HTML
 | |
|         $summary = new HVAC_Event_Summary_Data($event_id);
 | |
|         ob_start();
 | |
|         $summary->display_event_summary();
 | |
|         $output = ob_get_clean();
 | |
| 
 | |
|         // Verify theme-specific classes and structure
 | |
|         $this->assertStringContainsString('hvac-event-summary', $output);
 | |
|         $this->assertStringContainsString('hvac-theme-compatible', $output);
 | |
|         $this->assertStringContainsString('event-details-section', $output);
 | |
|         $this->assertStringContainsString('transaction-summary-section', $output);
 | |
|     }
 | |
| } |