diff --git a/tests/phpunit/tests/functions/wpMaybeLoadWidgets.php b/tests/phpunit/tests/functions/wpMaybeLoadWidgets.php new file mode 100644 index 0000000000000..1d0994b017a12 --- /dev/null +++ b/tests/phpunit/tests/functions/wpMaybeLoadWidgets.php @@ -0,0 +1,33 @@ +assertFalse( class_exists( 'WP_Nav_Menu_Widget' ), 'WP_Nav_Menu_Widget class should not be loaded initially.' ); + $this->assertFalse( has_action( '_admin_menu', 'wp_widgets_add_menu' ), 'wp_widgets_add_menu should not be hooked to _admin_menu initially.' ); + + add_filter( 'load_default_widgets', '__return_false' ); + wp_maybe_load_widgets(); + remove_filter( 'load_default_widgets', '__return_false' ); + + $this->assertFalse( class_exists( 'WP_Nav_Menu_Widget' ), 'WP_Nav_Menu_Widget class should not be loaded when load_default_widgets filter returns false.' ); + $this->assertFalse( has_action( '_admin_menu', 'wp_widgets_add_menu' ), 'wp_widgets_add_menu should not be hooked to _admin_menu when load_default_widgets filter returns false.' ); + } + + wp_maybe_load_widgets(); + + $this->assertTrue( class_exists( 'WP_Nav_Menu_Widget' ), 'WP_Nav_Menu_Widget class should be loaded.' ); + $this->assertNotFalse( has_action( '_admin_menu', 'wp_widgets_add_menu' ), 'wp_widgets_add_menu should be hooked to _admin_menu.' ); + } +}