upskill-event-manager/wordpress-dev/tests/basic/test-hooks.php
bengizmo d6211ee364 feat(testing): Implement HVAC_Test_User_Factory and update .gitignore
- 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.
2025-04-14 17:41:36 -03:00

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