core = $this->createMock(Core::class); // Set up WordPress function mocks WP_Mock::userFunction('add_action', [ 'times' => 1, 'args' => ['admin_enqueue_scripts', \WP_Mock\Functions::type('array')], ]); // Create instance of Admin class $this->admin = new Admin($this->core); } /** * Tear down test environment */ public function tearDown(): void { WP_Mock::tearDown(); parent::tearDown(); } /** * Test constructor */ public function test_constructor() { // Verify that the constructor initializes hooks $this->assertInstanceOf(Admin::class, $this->admin); } /** * Test enqueue_admin_assets */ public function test_enqueue_admin_assets() { // Set up WordPress function mocks WP_Mock::userFunction('wp_enqueue_style', [ 'times' => 1, 'args' => ['wpst-admin-styles', \WP_Mock\Functions::type('string'), [], \WP_Mock\Functions::type('string')], ]); WP_Mock::userFunction('wp_enqueue_script', [ 'times' => 1, 'args' => ['wpst-admin-scripts', \WP_Mock\Functions::type('string'), ['jquery'], \WP_Mock\Functions::type('string'), true], ]); WP_Mock::userFunction('wp_localize_script', [ 'times' => 1, 'args' => ['wpst-admin-scripts', 'wpstData', \WP_Mock\Functions::type('array')], ]); WP_Mock::userFunction('esc_html__', [ 'times' => 2, 'args' => [\WP_Mock\Functions::type('string'), 'wp-plugin-starter-template'], 'return' => 'Translated string', ]); WP_Mock::userFunction('admin_url', [ 'times' => 1, 'args' => ['admin-ajax.php'], 'return' => 'http://example.org/wp-admin/admin-ajax.php', ]); WP_Mock::userFunction('wp_create_nonce', [ 'times' => 1, 'args' => ['wpst-admin-nonce'], 'return' => '1234567890', ]); // Call the method $this->admin->enqueue_admin_assets('plugins.php'); // If we get here, the test passed $this->assertTrue(true); } }