- 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.
		
			
				
	
	
		
			146 lines
		
	
	
		
			No EOL
		
	
	
		
			4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			No EOL
		
	
	
		
			4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Tests for WordPress hooks and filters integration
 | |
|  */
 | |
| 
 | |
| // Ensure we're running in test mode
 | |
| if (!defined('HVAC_TEST_DIR')) {
 | |
|     require_once dirname(__DIR__) . '/bootstrap-staging.php';
 | |
| }
 | |
| 
 | |
| class HVAC_Hooks_Test extends PHPUnit\Framework\TestCase {
 | |
|     
 | |
|     protected $hook_calls = [];
 | |
|     protected $filter_values = [];
 | |
| 
 | |
|     protected function setUp(): void {
 | |
|         parent::setUp();
 | |
|         // Set staging environment if needed
 | |
|         if (!getenv('HVAC_ENV')) {
 | |
|             putenv('HVAC_ENV=staging');
 | |
|         }
 | |
|         
 | |
|         // Reset tracking arrays
 | |
|         $this->hook_calls = [];
 | |
|         $this->filter_values = [];
 | |
|     }
 | |
| 
 | |
|     public function test_plugin_activation_hooks() {
 | |
|         // Test activation hook registration
 | |
|         $result = register_activation_hook(
 | |
|             HVAC_PLUGIN_DIR . '/hvac-community-events.php',
 | |
|             function() {}
 | |
|         );
 | |
|         
 | |
|         $this->assertTrue(
 | |
|             $result,
 | |
|             'Activation hook should be registered successfully'
 | |
|         );
 | |
| 
 | |
|         // Test deactivation hook registration
 | |
|         $result = register_deactivation_hook(
 | |
|             HVAC_PLUGIN_DIR . '/hvac-community-events.php',
 | |
|             function() {}
 | |
|         );
 | |
|         
 | |
|         $this->assertTrue(
 | |
|             $result,
 | |
|             'Deactivation hook should be registered successfully'
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public function test_event_hooks() {
 | |
|         // Track hook execution
 | |
|         add_action('hvac_before_event_creation', function($event_data) {
 | |
|             $this->hook_calls[] = [
 | |
|                 'hook' => 'hvac_before_event_creation',
 | |
|                 'data' => $event_data
 | |
|             ];
 | |
|         });
 | |
| 
 | |
|         // Simulate event creation
 | |
|         do_action('hvac_before_event_creation', [
 | |
|             'title' => 'Test Event',
 | |
|             'date' => '2025-04-10'
 | |
|         ]);
 | |
| 
 | |
|         $this->assertCount(
 | |
|             1,
 | |
|             $this->hook_calls,
 | |
|             'Event creation hook should be called once'
 | |
|         );
 | |
|         
 | |
|         $this->assertEquals(
 | |
|             'Test Event',
 | |
|             $this->hook_calls[0]['data']['title'],
 | |
|             'Event data should be passed to hook correctly'
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public function test_content_filters() {
 | |
|         // Add test filter
 | |
|         add_filter('hvac_event_content', function($content) {
 | |
|             $this->filter_values[] = $content;
 | |
|             return 'Filtered: ' . $content;
 | |
|         });
 | |
| 
 | |
|         // Test content filtering
 | |
|         $original_content = 'Original event content';
 | |
|         $filtered_content = apply_filters('hvac_event_content', $original_content);
 | |
| 
 | |
|         $this->assertStringContainsString(
 | |
|             'Filtered:',
 | |
|             $filtered_content,
 | |
|             'Content should be modified by filter'
 | |
|         );
 | |
|         
 | |
|         $this->assertCount(
 | |
|             1,
 | |
|             $this->filter_values,
 | |
|             'Filter should be called once'
 | |
|         );
 | |
|         
 | |
|         $this->assertEquals(
 | |
|             $original_content,
 | |
|             $this->filter_values[0],
 | |
|             'Original content should be passed to filter'
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public function test_conditional_hooks() {
 | |
|         // Test is_page mock
 | |
|         $this->assertFalse(
 | |
|             is_page('events'),
 | |
|             'is_page mock should return false by default'
 | |
|         );
 | |
| 
 | |
|         // Test is_singular mock
 | |
|         $this->assertFalse(
 | |
|             is_singular('tribe_events'),
 | |
|             'is_singular mock should return false by default'
 | |
|         );
 | |
|     }
 | |
| 
 | |
|     public function test_url_functions() {
 | |
|         $this->assertEquals(
 | |
|             'http://example.com/events',
 | |
|             home_url('/events'),
 | |
|             'home_url should return correct test URL'
 | |
|         );
 | |
|     }
 | |
| }
 | |
| 
 | |
| // Add required function if not exists
 | |
| if (!function_exists('do_action')) {
 | |
|     function do_action($hook, ...$args) {
 | |
|         error_log("[HVAC TEST] Mock do_action called for hook: $hook");
 | |
|         return true;
 | |
|     }
 | |
| }
 | |
| 
 | |
| if (!function_exists('apply_filters')) {
 | |
|     function apply_filters($hook, $value, ...$args) {
 | |
|         error_log("[HVAC TEST] Mock apply_filters called for hook: $hook");
 | |
|         return 'Filtered: ' . $value;
 | |
|     }
 | |
| } |