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 = "\n"; $expected .= "\n"; $expected .= "\n"; $expected .= "\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 .= "\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 .= "\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 .= "\n"; // Try with a local resource and an automatic protocol reference (//) $url = '//my_plugin/script.js'; wp_enqueue_script( 'plugin-script', $url ); $expected .= "\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 .= "\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; } /** * @ticket 22229 */ function test_inline_should_not_output_script_tag_with_src() { wp_enqueue_script( 'baba-inline-0', 'inline' ); $this->assertEquals( '', get_echo( 'wp_print_scripts' ) ); } /** * @ticket 22229 */ function test_json_encode_should_not_encode_special_literal_values() { if ( ! class_exists( 'WP_JS_Literal' ) ) { $this->markTestSkipped( "WP_JS_Literal class doesn't exist" ); } $literal = new WP_JS_Literal( 'baba()' ); $this->assertEquals( '{"x":baba()}', WP_JS_Literal::json_encode( array( 'x' => $literal ), array( $literal ) ) ); } /** * @ticket 22229 */ function test_json_encode_should_not_encode_special_literal_values_with_dependencies() { if ( ! class_exists( 'WP_JS_Literal' ) ) { $this->markTestSkipped( "WP_JS_Literal class doesn't exist" ); } $literal = new WP_JS_Literal( 'baba()', array( 'dep0', 'dep1' ) ); $this->assertEquals( '{"x":baba()}', WP_JS_Literal::json_encode( array( 'x' => $literal ), array( $literal ) ) ); } }