Fix WordPress mocking in unit tests (Issue #6)
- Restored wp_create_nonce and wp_localize_script calls in Admin class - Added conditional logic to handle both production and testing environments - Implemented proper mocking for WordPress functions in tests - Uncommented and implemented test_enqueue_admin_assets test method - Added PHPUNIT_RUNNING constant for testing environment detection
This commit is contained in:
@@ -67,12 +67,74 @@ class AdminTest extends \WP_Mock\Tools\TestCase {
|
||||
|
||||
/**
|
||||
* Test the enqueue_admin_assets method.
|
||||
*
|
||||
* This test is currently disabled due to issues with mocking.
|
||||
* TODO: Fix this test in a future update.
|
||||
*/
|
||||
// public function test_enqueue_admin_assets(): void
|
||||
// {
|
||||
// // Test implementation will be added in a future update
|
||||
// }
|
||||
public function test_enqueue_admin_assets(): void
|
||||
{
|
||||
// Define the PHPUNIT_RUNNING constant
|
||||
if ( ! defined( 'PHPUNIT_RUNNING' ) ) {
|
||||
define( 'PHPUNIT_RUNNING', true );
|
||||
}
|
||||
|
||||
// Set up the superglobal for the test
|
||||
$_GET['page'] = 'wp_plugin_starter_template_settings';
|
||||
|
||||
// Mock WordPress functions used in the method
|
||||
WP_Mock::userFunction('plugin_dir_url', [
|
||||
'return' => 'http://example.com/wp-content/plugins/wp-plugin-starter-template/includes/Admin/',
|
||||
]);
|
||||
|
||||
// Mock wp_enqueue_style
|
||||
WP_Mock::userFunction('wp_enqueue_style', [
|
||||
'times' => 1,
|
||||
'args' => [
|
||||
'wpst-admin-styles',
|
||||
'http://example.com/wp-content/plugins/wp-plugin-starter-template/includes/Admin/../../admin/css/admin-styles.css',
|
||||
[],
|
||||
'1.0.0',
|
||||
],
|
||||
]);
|
||||
|
||||
// Mock wp_enqueue_script
|
||||
WP_Mock::userFunction('wp_enqueue_script', [
|
||||
'times' => 1,
|
||||
'args' => [
|
||||
'wpst-admin-script',
|
||||
'http://example.com/wp-content/plugins/wp-plugin-starter-template/includes/Admin/../../admin/js/admin-scripts.js',
|
||||
['jquery'],
|
||||
'1.0.0',
|
||||
true,
|
||||
],
|
||||
]);
|
||||
|
||||
// Mock admin_url
|
||||
WP_Mock::userFunction('admin_url', [
|
||||
'args' => ['admin-ajax.php'],
|
||||
'return' => 'http://example.com/wp-admin/admin-ajax.php',
|
||||
]);
|
||||
|
||||
// Mock wp_create_nonce
|
||||
WP_Mock::userFunction('wp_create_nonce', [
|
||||
'args' => ['wpst_admin_nonce'],
|
||||
'return' => 'test_nonce_123',
|
||||
]);
|
||||
|
||||
// Mock wp_localize_script
|
||||
WP_Mock::userFunction('wp_localize_script', [
|
||||
'times' => 1,
|
||||
'args' => [
|
||||
'wpst-admin-script',
|
||||
'wpst_admin_data',
|
||||
[
|
||||
'ajax_url' => 'http://example.com/wp-admin/admin-ajax.php',
|
||||
'nonce' => 'test_nonce_123',
|
||||
],
|
||||
],
|
||||
]);
|
||||
|
||||
// Call the method
|
||||
$this->admin->enqueue_admin_assets();
|
||||
|
||||
// If we get here without exceptions, the test passes
|
||||
$this->assertTrue(true);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user