mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
Adds a `public` visibility to test fixtures, tests, data providers, and callbacks methods. Adds a `private` visibility to helper methods within test classes. Renames callbacks and helpers that previously started with a `_` prefix. Why? For consistency and to leverage using the method visibility. Further naming standardizations is beyond the scope of this commit. Props costdev, jrf, hellofromTonya. Fixes #54177. git-svn-id: https://develop.svn.wordpress.org/trunk@52010 602fd350-edb4-49c9-b593-d223f7449a82
139 lines
4.0 KiB
PHP
139 lines
4.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group dependencies
|
|
* @group scripts
|
|
*/
|
|
class Tests_Dependencies_jQuery extends WP_UnitTestCase {
|
|
|
|
/**
|
|
* @covers WP_Scripts::query
|
|
*/
|
|
public function test_location_of_jquery() {
|
|
$scripts = new WP_Scripts;
|
|
wp_default_scripts( $scripts );
|
|
|
|
if ( SCRIPT_DEBUG ) {
|
|
$jquery_scripts = array(
|
|
'jquery-core' => '/wp-includes/js/jquery/jquery.js',
|
|
'jquery-migrate' => '/wp-includes/js/jquery/jquery-migrate.js',
|
|
);
|
|
} else {
|
|
$jquery_scripts = array(
|
|
'jquery-core' => '/wp-includes/js/jquery/jquery.min.js',
|
|
'jquery-migrate' => '/wp-includes/js/jquery/jquery-migrate.min.js',
|
|
);
|
|
}
|
|
|
|
$object = $scripts->query( 'jquery', 'registered' );
|
|
$this->assertInstanceOf( '_WP_Dependency', $object );
|
|
|
|
// The following test is disabled in WP 5.5 as jQuery 1.12.4 is loaded without jQuery Migrate 1.4.1,
|
|
// and reenabled in 5.6 when jQuery 3.5.1 is loaded with jQuery Migrate 3.3.1.
|
|
$this->assertSameSets( $object->deps, array_keys( $jquery_scripts ) );
|
|
foreach ( $object->deps as $dep ) {
|
|
$o = $scripts->query( $dep, 'registered' );
|
|
$this->assertInstanceOf( '_WP_Dependency', $object );
|
|
$this->assertArrayHasKey( $dep, $jquery_scripts );
|
|
$this->assertSame( $jquery_scripts[ $dep ], $o->src );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @ticket 22896
|
|
*
|
|
* @expectedIncorrectUsage wp_deregister_script
|
|
*
|
|
* @covers ::wp_script_is
|
|
*/
|
|
public function test_dont_allow_deregister_core_scripts_in_admin() {
|
|
set_current_screen( 'edit.php' );
|
|
$this->assertTrue( is_admin() );
|
|
$libraries = array(
|
|
'jquery',
|
|
'jquery-core',
|
|
'jquery-migrate',
|
|
'jquery-ui-core',
|
|
'jquery-ui-accordion',
|
|
'jquery-ui-autocomplete',
|
|
'jquery-ui-button',
|
|
'jquery-ui-datepicker',
|
|
'jquery-ui-dialog',
|
|
'jquery-ui-draggable',
|
|
'jquery-ui-droppable',
|
|
'jquery-ui-menu',
|
|
'jquery-ui-mouse',
|
|
'jquery-ui-position',
|
|
'jquery-ui-progressbar',
|
|
'jquery-ui-resizable',
|
|
'jquery-ui-selectable',
|
|
'jquery-ui-slider',
|
|
'jquery-ui-sortable',
|
|
'jquery-ui-spinner',
|
|
'jquery-ui-tabs',
|
|
'jquery-ui-tooltip',
|
|
'jquery-ui-widget',
|
|
'backbone',
|
|
'underscore',
|
|
);
|
|
|
|
foreach ( $libraries as $library ) {
|
|
// Try to deregister the script, which should fail.
|
|
wp_deregister_script( $library );
|
|
$this->assertTrue( wp_script_is( $library, 'registered' ) );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @ticket 28404
|
|
*
|
|
* @covers ::wp_script_is
|
|
*/
|
|
public function test_wp_script_is_dep_enqueued() {
|
|
wp_enqueue_script( 'jquery-ui-accordion' );
|
|
|
|
$this->assertTrue( wp_script_is( 'jquery', 'enqueued' ) );
|
|
$this->assertFalse( wp_script_is( 'underscore', 'enqueued' ) );
|
|
|
|
unset( $GLOBALS['wp_scripts'] );
|
|
}
|
|
|
|
/**
|
|
* Test placing of jQuery in footer.
|
|
*
|
|
* @ticket 25247
|
|
*
|
|
* @covers WP_Scripts::do_items
|
|
*/
|
|
public function test_jquery_in_footer() {
|
|
$scripts = new WP_Scripts;
|
|
$scripts->add( 'jquery', false, array( 'jquery-core', 'jquery-migrate' ) );
|
|
$scripts->add( 'jquery-core', '/jquery.js', array() );
|
|
$scripts->add( 'jquery-migrate', '/jquery-migrate.js', array() );
|
|
|
|
$scripts->enqueue( 'jquery' );
|
|
|
|
$jquery = $scripts->query( 'jquery' );
|
|
$jquery->add_data( 'group', 1 );
|
|
foreach ( $jquery->deps as $dep ) {
|
|
$scripts->add_data( $dep, 'group', 1 );
|
|
}
|
|
|
|
// Match only one script tag for 5.5, revert to `{2}` for 5.6.
|
|
$this->expectOutputRegex( '/^(?:<script[^>]+><\/script>\\n){2}$/' );
|
|
|
|
$scripts->do_items( false, 0 );
|
|
$this->assertNotContains( 'jquery', $scripts->done );
|
|
$this->assertNotContains( 'jquery-core', $scripts->done, 'jquery-core should be in footer but is in head' );
|
|
$this->assertNotContains( 'jquery-migrate', $scripts->done, 'jquery-migrate should be in footer but is in head' );
|
|
|
|
$scripts->do_items( false, 1 );
|
|
$this->assertContains( 'jquery', $scripts->done );
|
|
|
|
// The following test is disabled in WP 5.5 as jQuery 1.12.4 is loaded without jQuery Migrate 1.4.1,
|
|
// and reenabled in 5.6 when jQuery 3.5.1 is loaded with Migrate 3.3.1.
|
|
$this->assertContains( 'jquery-core', $scripts->done, 'jquery-core in footer' );
|
|
$this->assertContains( 'jquery-migrate', $scripts->done, 'jquery-migrate in footer' );
|
|
}
|
|
}
|