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