mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2025-10-16 12:05:38 +00:00
This is a follow-up to [36604]. When processing dependencies `$this->group` will be the minimum of the script's registered group and all preceding siblings. This is wrong because only a scripts ancestors in the dependency chain should affect where it is loaded. Effectively `$this->group` introduced a form of global state which potentially corrupted the group of dependencies. Sorting covers up this problem. The issue in #35873 was that script were not moving their dependencies to a lower group when necessary. The fix: * In `WP_Dependencies::all_deps()` pass the new `$group` value to `WP_Dependencies::all_deps()`. Previously the wrong value was passed because the parent script could have moved with `WP_Scripts::set_group()`. * In `WP_Scripts::all_deps()` pass the `$group` parameter to `WP_Dependencies::all_deps()` so it doesn't always use `false` for `$group`. Same for `WP_Styles::all_deps()`. Props stephenharris, gitlost. Fixes #35956. git-svn-id: https://develop.svn.wordpress.org/trunk@36871 602fd350-edb4-49c9-b593-d223f7449a82
524 lines
21 KiB
PHP
524 lines
21 KiB
PHP
<?php
|
|
/**
|
|
* @group dependencies
|
|
* @group scripts
|
|
*/
|
|
class Tests_Dependencies_Scripts extends WP_UnitTestCase {
|
|
var $old_wp_scripts;
|
|
|
|
function setUp() {
|
|
parent::setUp();
|
|
$this->old_wp_scripts = isset( $GLOBALS['wp_scripts'] ) ? $GLOBALS['wp_scripts'] : null;
|
|
remove_action( 'wp_default_scripts', 'wp_default_scripts' );
|
|
$GLOBALS['wp_scripts'] = new WP_Scripts();
|
|
$GLOBALS['wp_scripts']->default_version = get_bloginfo( 'version' );
|
|
}
|
|
|
|
function tearDown() {
|
|
$GLOBALS['wp_scripts'] = $this->old_wp_scripts;
|
|
add_action( 'wp_default_scripts', 'wp_default_scripts' );
|
|
parent::tearDown();
|
|
}
|
|
|
|
/**
|
|
* Test versioning
|
|
* @ticket 11315
|
|
*/
|
|
function test_wp_enqueue_script() {
|
|
wp_enqueue_script('no-deps-no-version', 'example.com', array());
|
|
wp_enqueue_script('empty-deps-no-version', 'example.com' );
|
|
wp_enqueue_script('empty-deps-version', 'example.com', array(), 1.2);
|
|
wp_enqueue_script('empty-deps-null-version', 'example.com', array(), null);
|
|
$ver = get_bloginfo( 'version' );
|
|
$expected = "<script type='text/javascript' src='http://example.com?ver=$ver'></script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com?ver=$ver'></script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com?ver=1.2'></script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
|
|
$this->assertEquals($expected, get_echo('wp_print_scripts'));
|
|
|
|
// No scripts left to print
|
|
$this->assertEquals("", get_echo('wp_print_scripts'));
|
|
}
|
|
|
|
/**
|
|
* Test the different protocol references in wp_enqueue_script
|
|
* @global WP_Scripts $wp_scripts
|
|
* @ticket 16560
|
|
*/
|
|
public function test_protocols() {
|
|
// Init
|
|
global $wp_scripts;
|
|
$base_url_backup = $wp_scripts->base_url;
|
|
$wp_scripts->base_url = 'http://example.com/wordpress';
|
|
$expected = '';
|
|
$ver = get_bloginfo( 'version' );
|
|
|
|
// Try with an HTTP reference
|
|
wp_enqueue_script( 'jquery-http', 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' );
|
|
$expected .= "<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=$ver'></script>\n";
|
|
|
|
// Try with an HTTPS reference
|
|
wp_enqueue_script( 'jquery-https', 'https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' );
|
|
$expected .= "<script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=$ver'></script>\n";
|
|
|
|
// Try with an automatic protocol reference (//)
|
|
wp_enqueue_script( 'jquery-doubleslash', '//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' );
|
|
$expected .= "<script type='text/javascript' src='//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=$ver'></script>\n";
|
|
|
|
// Try with a local resource and an automatic protocol reference (//)
|
|
$url = '//my_plugin/script.js';
|
|
wp_enqueue_script( 'plugin-script', $url );
|
|
$expected .= "<script type='text/javascript' src='$url?ver=$ver'></script>\n";
|
|
|
|
// Try with a bad protocol
|
|
wp_enqueue_script( 'jquery-ftp', 'ftp://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js' );
|
|
$expected .= "<script type='text/javascript' src='{$wp_scripts->base_url}ftp://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js?ver=$ver'></script>\n";
|
|
|
|
// Go!
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
|
|
// No scripts left to print
|
|
$this->assertEquals( '', get_echo( 'wp_print_scripts' ) );
|
|
|
|
// Cleanup
|
|
$wp_scripts->base_url = $base_url_backup;
|
|
}
|
|
|
|
/**
|
|
* Test script concatenation.
|
|
*/
|
|
public function test_script_concatenation() {
|
|
global $wp_scripts;
|
|
|
|
$wp_scripts->do_concat = true;
|
|
$wp_scripts->default_dirs = array( '/directory/' );
|
|
|
|
wp_enqueue_script( 'one', '/directory/script.js' );
|
|
wp_enqueue_script( 'two', '/directory/script.js' );
|
|
wp_enqueue_script( 'three', '/directory/script.js' );
|
|
|
|
wp_print_scripts();
|
|
$print_scripts = get_echo( '_print_scripts' );
|
|
|
|
$ver = get_bloginfo( 'version' );
|
|
$expected = "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=one,two,three&ver={$ver}'></script>\n";
|
|
|
|
$this->assertEquals( $expected, $print_scripts );
|
|
}
|
|
|
|
/**
|
|
* Testing `wp_script_add_data` with the data key.
|
|
* @ticket 16024
|
|
*/
|
|
function test_wp_script_add_data_with_data_key() {
|
|
// Enqueue & add data
|
|
wp_enqueue_script( 'test-only-data', 'example.com', array(), null );
|
|
wp_script_add_data( 'test-only-data', 'data', 'testing' );
|
|
$expected = "<script type='text/javascript'>\n/* <![CDATA[ */\ntesting\n/* ]]> */\n</script>\n";
|
|
$expected.= "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
|
|
// Go!
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
|
|
// No scripts left to print
|
|
$this->assertEquals( '', get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* Testing `wp_script_add_data` with the conditional key.
|
|
* @ticket 16024
|
|
*/
|
|
function test_wp_script_add_data_with_conditional_key() {
|
|
// Enqueue & add conditional comments
|
|
wp_enqueue_script( 'test-only-conditional', 'example.com', array(), null );
|
|
wp_script_add_data( 'test-only-conditional', 'conditional', 'gt IE 7' );
|
|
$expected = "<!--[if gt IE 7]>\n<script type='text/javascript' src='http://example.com'></script>\n<![endif]-->\n";
|
|
|
|
// Go!
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
|
|
// No scripts left to print
|
|
$this->assertEquals( '', get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* Testing `wp_script_add_data` with both the data & conditional keys.
|
|
* @ticket 16024
|
|
*/
|
|
function test_wp_script_add_data_with_data_and_conditional_keys() {
|
|
// Enqueue & add data plus conditional comments for both
|
|
wp_enqueue_script( 'test-conditional-with-data', 'example.com', array(), null );
|
|
wp_script_add_data( 'test-conditional-with-data', 'data', 'testing' );
|
|
wp_script_add_data( 'test-conditional-with-data', 'conditional', 'lt IE 9' );
|
|
$expected = "<!--[if lt IE 9]>\n<script type='text/javascript'>\n/* <![CDATA[ */\ntesting\n/* ]]> */\n</script>\n<![endif]-->\n";
|
|
$expected.= "<!--[if lt IE 9]>\n<script type='text/javascript' src='http://example.com'></script>\n<![endif]-->\n";
|
|
|
|
// Go!
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
|
|
// No scripts left to print
|
|
$this->assertEquals( '', get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* Testing `wp_script_add_data` with an anvalid key.
|
|
* @ticket 16024
|
|
*/
|
|
function test_wp_script_add_data_with_invalid_key() {
|
|
// Enqueue & add an invalid key
|
|
wp_enqueue_script( 'test-invalid', 'example.com', array(), null );
|
|
wp_script_add_data( 'test-invalid', 'invalid', 'testing' );
|
|
$expected = "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
|
|
// Go!
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
|
|
// No scripts left to print
|
|
$this->assertEquals( '', get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* Testing 'wp_register_script' return boolean success/failure value.
|
|
*
|
|
* @ticket 31126
|
|
*/
|
|
function test_wp_register_script() {
|
|
$this->assertTrue( wp_register_script( 'duplicate-handler', 'http://example.com' ) );
|
|
$this->assertFalse( wp_register_script( 'duplicate-handler', 'http://example.com' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35229
|
|
*/
|
|
function test_wp_register_script_with_handle_without_source() {
|
|
$expected = "<script type='text/javascript' src='http://example.com?ver=1'></script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com?ver=2'></script>\n";
|
|
|
|
wp_register_script( 'handle-one', 'http://example.com', array(), 1 );
|
|
wp_register_script( 'handle-two', 'http://example.com', array(), 2 );
|
|
wp_register_script( 'handle-three', false, array( 'handle-one', 'handle-two' ) );
|
|
|
|
wp_enqueue_script( 'handle-three' );
|
|
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35643
|
|
*/
|
|
function test_wp_enqueue_script_footer_alias() {
|
|
wp_register_script( 'foo', false, array( 'bar', 'baz' ), '1.0', true );
|
|
wp_register_script( 'bar', home_url( 'bar.js' ), array(), '1.0', true );
|
|
wp_register_script( 'baz', home_url( 'baz.js' ), array(), '1.0', true );
|
|
|
|
wp_enqueue_script( 'foo' );
|
|
|
|
$header = get_echo( 'wp_print_head_scripts' );
|
|
$footer = get_echo( 'wp_print_footer_scripts' );
|
|
|
|
$this->assertEmpty( $header );
|
|
$this->assertContains( home_url( 'bar.js' ), $footer );
|
|
$this->assertContains( home_url( 'baz.js' ), $footer );
|
|
}
|
|
|
|
/**
|
|
* Test mismatch of groups in dependencies outputs all scripts in right order.
|
|
*
|
|
* @ticket 35873
|
|
*/
|
|
public function test_group_mismatch_in_deps() {
|
|
$scripts = new WP_Scripts;
|
|
$scripts->add( 'one', 'one', array(), 'v1', 1 );
|
|
$scripts->add( 'two', 'two', array( 'one' ) );
|
|
$scripts->add( 'three', 'three', array( 'two' ), 'v1', 1 );
|
|
|
|
$scripts->enqueue( array( 'three' ) );
|
|
|
|
$this->expectOutputRegex( '/^(?:<script[^>]+><\/script>\\n){7}$/' );
|
|
|
|
$scripts->do_items( false, 0 );
|
|
$this->assertContains( 'one', $scripts->done );
|
|
$this->assertContains( 'two', $scripts->done );
|
|
$this->assertNotContains( 'three', $scripts->done );
|
|
|
|
$scripts->do_items( false, 1 );
|
|
$this->assertContains( 'one', $scripts->done );
|
|
$this->assertContains( 'two', $scripts->done );
|
|
$this->assertContains( 'three', $scripts->done );
|
|
|
|
$scripts = new WP_Scripts;
|
|
$scripts->add( 'one', 'one', array(), 'v1', 1 );
|
|
$scripts->add( 'two', 'two', array( 'one' ), 'v1', 1 );
|
|
$scripts->add( 'three', 'three', array( 'one' ) );
|
|
$scripts->add( 'four', 'four', array( 'two', 'three' ), 'v1', 1 );
|
|
|
|
$scripts->enqueue( array( 'four' ) );
|
|
|
|
$scripts->do_items( false, 0 );
|
|
$this->assertContains( 'one', $scripts->done );
|
|
$this->assertNotContains( 'two', $scripts->done );
|
|
$this->assertContains( 'three', $scripts->done );
|
|
$this->assertNotContains( 'four', $scripts->done );
|
|
|
|
$scripts->do_items( false, 1 );
|
|
$this->assertContains( 'one', $scripts->done );
|
|
$this->assertContains( 'two', $scripts->done );
|
|
$this->assertContains( 'three', $scripts->done );
|
|
$this->assertContains( 'four', $scripts->done );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35873
|
|
*/
|
|
function test_wp_register_script_with_dependencies_in_head_and_footer() {
|
|
wp_register_script( 'parent', '/parent.js', array( 'child-head' ), null, true ); // in footer
|
|
wp_register_script( 'child-head', '/child-head.js', array( 'child-footer' ), null, false ); // in head
|
|
wp_register_script( 'child-footer', '/child-footer.js', array(), null, true ); // in footer
|
|
|
|
wp_enqueue_script( 'parent' );
|
|
|
|
$header = get_echo( 'wp_print_head_scripts' );
|
|
$footer = get_echo( 'wp_print_footer_scripts' );
|
|
|
|
$expected_header = "<script type='text/javascript' src='/child-footer.js'></script>\n";
|
|
$expected_header .= "<script type='text/javascript' src='/child-head.js'></script>\n";
|
|
$expected_footer = "<script type='text/javascript' src='/parent.js'></script>\n";
|
|
|
|
$this->assertEquals( $expected_header, $header );
|
|
$this->assertEquals( $expected_footer, $footer );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35956
|
|
*/
|
|
function test_wp_register_script_with_dependencies_in_head_and_footer_in_reversed_order() {
|
|
wp_register_script( 'child-head', '/child-head.js', array(), null, false ); // in head
|
|
wp_register_script( 'child-footer', '/child-footer.js', array(), null, true ); // in footer
|
|
wp_register_script( 'parent', '/parent.js', array( 'child-head', 'child-footer' ), null, true ); // in footer
|
|
|
|
wp_enqueue_script( 'parent' );
|
|
|
|
$header = get_echo( 'wp_print_head_scripts' );
|
|
$footer = get_echo( 'wp_print_footer_scripts' );
|
|
|
|
$expected_header = "<script type='text/javascript' src='/child-head.js'></script>\n";
|
|
$expected_footer = "<script type='text/javascript' src='/child-footer.js'></script>\n";
|
|
$expected_footer .= "<script type='text/javascript' src='/parent.js'></script>\n";
|
|
|
|
$this->assertEquals( $expected_header, $header );
|
|
$this->assertEquals( $expected_footer, $footer );
|
|
}
|
|
|
|
/**
|
|
* @ticket 35956
|
|
*/
|
|
function test_wp_register_script_with_dependencies_in_head_and_footer_in_reversed_order_and_two_parent_scripts() {
|
|
wp_register_script( 'grandchild-head', '/grandchild-head.js', array(), null, false ); // in head
|
|
wp_register_script( 'child-head', '/child-head.js', array(), null, false ); // in head
|
|
wp_register_script( 'child-footer', '/child-footer.js', array( 'grandchild-head' ), null, true ); // in footer
|
|
wp_register_script( 'child2-head', '/child2-head.js', array(), null, false ); // in head
|
|
wp_register_script( 'child2-footer', '/child2-footer.js', array(), null, true ); // in footer
|
|
wp_register_script( 'parent-footer', '/parent-footer.js', array( 'child-head', 'child-footer', 'child2-head', 'child2-footer' ), null, true ); // in footer
|
|
wp_register_script( 'parent-header', '/parent-header.js', array( 'child-head' ), null, false ); // in head
|
|
|
|
wp_enqueue_script( 'parent-footer' );
|
|
wp_enqueue_script( 'parent-header' );
|
|
|
|
$header = get_echo( 'wp_print_head_scripts' );
|
|
$footer = get_echo( 'wp_print_footer_scripts' );
|
|
|
|
$expected_header = "<script type='text/javascript' src='/child-head.js'></script>\n";
|
|
$expected_header .= "<script type='text/javascript' src='/grandchild-head.js'></script>\n";
|
|
$expected_header .= "<script type='text/javascript' src='/child2-head.js'></script>\n";
|
|
$expected_header .= "<script type='text/javascript' src='/parent-header.js'></script>\n";
|
|
|
|
$expected_footer = "<script type='text/javascript' src='/child-footer.js'></script>\n";
|
|
$expected_footer .= "<script type='text/javascript' src='/child2-footer.js'></script>\n";
|
|
$expected_footer .= "<script type='text/javascript' src='/parent-footer.js'></script>\n";
|
|
|
|
$this->assertEquals( $expected_header, $header );
|
|
$this->assertEquals( $expected_footer, $footer );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
function test_wp_add_inline_script_returns_bool() {
|
|
$this->assertFalse( wp_add_inline_script( 'test-example', 'console.log("before");', 'before' ) );
|
|
wp_enqueue_script( 'test-example', 'example.com', array(), null );
|
|
$this->assertTrue( wp_add_inline_script( 'test-example', 'console.log("before");', 'before' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
function test_wp_add_inline_script_unknown_handle() {
|
|
$this->assertFalse( wp_add_inline_script( 'test-invalid', 'console.log("before");', 'before' ) );
|
|
$this->assertEquals( '', get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
function test_wp_add_inline_script_before() {
|
|
wp_enqueue_script( 'test-example', 'example.com', array(), null );
|
|
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
|
|
|
|
$expected = "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
function test_wp_add_inline_script_after() {
|
|
wp_enqueue_script( 'test-example', 'example.com', array(), null );
|
|
wp_add_inline_script( 'test-example', 'console.log("after");' );
|
|
|
|
$expected = "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
|
|
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
function test_wp_add_inline_script_before_and_after() {
|
|
wp_enqueue_script( 'test-example', 'example.com', array(), null );
|
|
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
|
|
wp_add_inline_script( 'test-example', 'console.log("after");' );
|
|
|
|
$expected = "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
|
|
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
function test_wp_add_inline_script_multiple() {
|
|
wp_enqueue_script( 'test-example', 'example.com', array(), null );
|
|
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
|
|
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
|
|
wp_add_inline_script( 'test-example', 'console.log("after");' );
|
|
wp_add_inline_script( 'test-example', 'console.log("after");' );
|
|
|
|
$expected = "<script type='text/javascript'>\nconsole.log(\"before\");\nconsole.log(\"before\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\nconsole.log(\"after\");\n</script>\n";
|
|
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
function test_wp_add_inline_script_localized_data_is_added_first() {
|
|
wp_enqueue_script( 'test-example', 'example.com', array(), null );
|
|
wp_localize_script( 'test-example', 'testExample', array( 'foo' => 'bar' ) );
|
|
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
|
|
wp_add_inline_script( 'test-example', 'console.log("after");' );
|
|
|
|
$expected = "<script type='text/javascript'>\n/* <![CDATA[ */\nvar testExample = {\"foo\":\"bar\"};\n/* ]]> */\n</script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
|
|
|
|
$this->assertEquals( $expected, get_echo( 'wp_print_scripts' ) );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
public function test_wp_add_inline_script_before_with_concat() {
|
|
global $wp_scripts;
|
|
|
|
$wp_scripts->do_concat = true;
|
|
$wp_scripts->default_dirs = array( '/directory/' );
|
|
|
|
wp_enqueue_script( 'one', '/directory/one.js' );
|
|
wp_enqueue_script( 'two', '/directory/two.js' );
|
|
wp_enqueue_script( 'three', '/directory/three.js' );
|
|
|
|
wp_add_inline_script( 'one', 'console.log("before one");', 'before' );
|
|
wp_add_inline_script( 'two', 'console.log("before two");', 'before' );
|
|
|
|
wp_print_scripts();
|
|
$print_scripts = get_echo( '_print_scripts' );
|
|
|
|
$ver = get_bloginfo( 'version' );
|
|
$expected = "<script type='text/javascript'>\nconsole.log(\"before one\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"before two\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=one,two,three&ver={$ver}'></script>\n";
|
|
|
|
$this->assertEquals( $expected, $print_scripts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
public function test_wp_add_inline_script_after_with_concat() {
|
|
global $wp_scripts;
|
|
|
|
$wp_scripts->do_concat = true;
|
|
$wp_scripts->default_dirs = array( '/directory/' );
|
|
|
|
wp_enqueue_script( 'one', '/directory/one.js' );
|
|
wp_enqueue_script( 'two', '/directory/two.js' );
|
|
wp_enqueue_script( 'three', '/directory/three.js' );
|
|
wp_enqueue_script( 'four', '/directory/four.js' );
|
|
|
|
wp_add_inline_script( 'two', 'console.log("after two");' );
|
|
wp_add_inline_script( 'three', 'console.log("after three");' );
|
|
|
|
wp_print_scripts();
|
|
$print_scripts = get_echo( '_print_scripts' );
|
|
|
|
$ver = get_bloginfo( 'version' );
|
|
$expected = "<script type='text/javascript' src='/directory/two.js?ver={$ver}'></script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"after two\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='/directory/three.js?ver={$ver}'></script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"after three\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='/wp-admin/load-scripts.php?c=0&load%5B%5D=one,four&ver={$ver}'></script>\n";
|
|
|
|
$this->assertEquals( $expected, $print_scripts );
|
|
}
|
|
|
|
/**
|
|
* @ticket 14853
|
|
*/
|
|
public function test_wp_add_inline_script_concat_with_conditional() {
|
|
global $wp_scripts;
|
|
|
|
$wp_scripts->do_concat = true;
|
|
$wp_scripts->default_dirs = array('/wp-admin/js/', '/wp-includes/js/'); // Default dirs as in wp-includes/script-loader.php
|
|
|
|
$expected_localized = "<!--[if gte IE 9]>\n";
|
|
$expected_localized .= "<script type='text/javascript'>\n/* <![CDATA[ */\nvar testExample = {\"foo\":\"bar\"};\n/* ]]> */\n</script>\n";
|
|
$expected_localized .= "<![endif]-->\n";
|
|
|
|
$expected = "<!--[if gte IE 9]>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"before\");\n</script>\n";
|
|
$expected .= "<script type='text/javascript' src='http://example.com'></script>\n";
|
|
$expected .= "<script type='text/javascript'>\nconsole.log(\"after\");\n</script>\n";
|
|
$expected .= "<![endif]-->\n";
|
|
|
|
wp_enqueue_script( 'test-example', 'example.com', array(), null );
|
|
wp_localize_script( 'test-example', 'testExample', array( 'foo' => 'bar' ) );
|
|
wp_add_inline_script( 'test-example', 'console.log("before");', 'before' );
|
|
wp_add_inline_script( 'test-example', 'console.log("after");' );
|
|
wp_script_add_data( 'test-example', 'conditional', 'gte IE 9' );
|
|
|
|
$this->assertEquals( $expected_localized, get_echo( 'wp_print_scripts' ) );
|
|
$this->assertEquals( $expected, $wp_scripts->print_html_before );
|
|
$this->assertEquals( '', $wp_scripts->print_html );
|
|
}
|
|
|
|
}
|