old_wp_styles = $GLOBALS['wp_styles']; remove_action( 'wp_default_styles', 'wp_default_styles' ); remove_action( 'wp_print_styles', 'print_emoji_styles' ); $GLOBALS['wp_styles'] = new WP_Styles(); $GLOBALS['wp_styles']->default_version = get_bloginfo( 'version' ); } function tearDown() { $GLOBALS['wp_styles'] = $this->old_wp_styles; add_action( 'wp_default_styles', 'wp_default_styles' ); add_action( 'wp_print_styles', 'print_emoji_styles' ); parent::tearDown(); } /** * Test versioning * @ticket 11315 */ function test_wp_enqueue_style() { wp_enqueue_style('no-deps-no-version', 'example.com' ); wp_enqueue_style('no-deps-version', 'example.com', array(), 1.2); wp_enqueue_style('no-deps-null-version', 'example.com', array(), null); wp_enqueue_style('no-deps-null-version-print-media', 'example.com', array(), null, 'print'); $ver = get_bloginfo( 'version' ); $expected = "\n"; $expected .= "\n"; $expected .= "\n"; $expected .= "\n"; $this->assertEquals($expected, get_echo('wp_print_styles')); // No styles left to print $this->assertEquals("", get_echo('wp_print_styles')); } /** * Test the different protocol references in wp_enqueue_style * @global WP_Styles $wp_styles * @ticket 16560 */ public function test_protocols() { // Init global $wp_styles; $base_url_backup = $wp_styles->base_url; $wp_styles->base_url = 'http://example.com/wordpress'; $expected = ''; $ver = get_bloginfo( 'version' ); // Try with an HTTP reference wp_enqueue_style( 'reset-css-http', 'http://yui.yahooapis.com/2.8.1/build/reset/reset-min.css' ); $expected .= "\n"; // Try with an HTTPS reference wp_enqueue_style( 'reset-css-https', 'http://yui.yahooapis.com/2.8.1/build/reset/reset-min.css' ); $expected .= "\n"; // Try with an automatic protocol reference (//) wp_enqueue_style( 'reset-css-doubleslash', '//yui.yahooapis.com/2.8.1/build/reset/reset-min.css' ); $expected .= "\n"; // Try with a local resource and an automatic protocol reference (//) $url = '//my_plugin/style.css'; wp_enqueue_style( 'plugin-style', $url ); $expected .= "\n"; // Try with a bad protocol wp_enqueue_style( 'reset-css-ftp', 'ftp://yui.yahooapis.com/2.8.1/build/reset/reset-min.css' ); $expected .= "\n"; // Go! $this->assertEquals( $expected, get_echo( 'wp_print_styles' ) ); // No styles left to print $this->assertEquals( '', get_echo( 'wp_print_styles' ) ); // Cleanup $wp_styles->base_url = $base_url_backup; } /** * Test if inline styles work * @ticket 24813 */ public function test_inline_styles() { $style = ".thing {\n"; $style .= "\tbackground: red;\n"; $style .= "}"; $expected = "\n"; $expected .= "\n"; wp_enqueue_style( 'handle', 'http://example.com', array(), 1 ); wp_add_inline_style( 'handle', $style ); // No styles left to print $this->assertEquals( $expected, get_echo( 'wp_print_styles' ) ); } /** * Test if inline styles work with concatination * @global WP_Styles $wp_styles * @ticket 24813 */ public function test_inline_styles_concat() { global $wp_styles; $wp_styles->do_concat = true; $wp_styles->default_dirs = array( '/wp-admin/', '/wp-includes/css/' ); // Default dirs as in wp-includes/script-loader.php $style = ".thing {\n"; $style .= "\tbackground: red;\n"; $style .= "}"; $expected = "\n"; $expected .= "\n"; wp_enqueue_style( 'handle', 'http://example.com', array(), 1 ); wp_add_inline_style( 'handle', $style ); wp_print_styles(); $this->assertEquals( $expected, $wp_styles->print_html ); } /** * Test if multiple inline styles work * @ticket 24813 */ public function test_multiple_inline_styles() { $style1 = ".thing1 {\n"; $style1 .= "\tbackground: red;\n"; $style1 .= "}"; $style2 = ".thing2 {\n"; $style2 .= "\tbackground: blue;\n"; $style2 .= "}"; $expected = "\n"; $expected .= "\n"; wp_enqueue_style( 'handle', 'http://example.com', array(), 1 ); wp_add_inline_style( 'handle', $style1 ); wp_add_inline_style( 'handle', $style2 ); // No styles left to print $this->assertEquals( $expected, get_echo( 'wp_print_styles' ) ); } /** * Test if a plugin doing it the wrong way still works * * @expectedIncorrectUsage wp_add_inline_style * @ticket 24813 */ public function test_plugin_doing_inline_styles_wrong() { $style = ""; $expected = "\n"; $expected .= "$style\n"; wp_enqueue_style( 'handle', 'http://example.com', array(), 1 ); wp_add_inline_style( 'handle', $style ); $this->assertEquals( $expected, get_echo( 'wp_print_styles' ) ); } /** * Test to make sure CSS; wp_enqueue_style( 'handle', 'http://example.com', array(), 1 ); wp_style_add_data( 'handle', 'conditional', 'IE' ); wp_add_inline_style( 'handle', 'a { color: blue; }' ); $this->assertEquals( $expected, get_echo( 'wp_print_styles' ) ); } /** * Testing 'wp_register_style' return boolean success/failure value. * * @ticket 31126 */ function test_wp_register_style(){ $this->assertTrue( wp_register_style( 'duplicate-handler', 'http://example.com' ) ); $this->assertFalse( wp_register_style( 'duplicate-handler', 'http://example.com' ) ); } }